Питане относно формата на дата

DirectX

Registered
как е най-добре да се вкарва дата в база данни, за да може после при изкарване да се сравнява и подреждат хронологично и да се вижда в формат (ден.месец.година) :)

чудих се между timestamp, datetime и се зачудих и за другите неща :D [/img]
 
избрах Unixtimestamp и разбрах как да боравя с него ;д
обаче понеже понякога трябва ръчно да въведа датата, да я обърна в timestamp да я вкарам в базата и после да я изкарам използвам следното
обаче резултата е това..
PHP:
<?
$a = '18.08.2013';
echo $a;
echo "<br>";
$a = strtotime($a);
echo $a;
echo "<br>";
echo gmdate("d-m-Y H:i:s", $a);

?>
резултат
18.08.2013
1376776800
17-08-2013 22:00:00
 
Всеки един сървър за бази от данни (MySQL, PostgreSQL, Oracle, etc) има типове за дати, защото са част от SQL стандарта. Записвайки дата, винаги трябва да използваш някой от тези типове за тип на колоната. Кое точно, решаваш ти, най-общо - DATE записва година, месец и ден, а пък DATETIME записва и времето. Ако записваш само датата, няма смисъл да използваш поле, което е за дата и време.

Използването на unix timestamp (или time() в РНР), въобще не е по-удобно за изчисленя, както каза някой. Причината е, че базите данни си имат вградени функции за работа с дати (изчисления, интервали и т.н.), и точно те са удобни и павилни за употреба, включително и за сортиране. Но полето трябва да е от правилния тип, някой от типовете за дата, а не varchar или int.

Списък на date/time функциите в MySQL
http://dev.mysql.com/doc/refman/5.0/en/date-and-time-functions.html

Има налични функции, чрез които:
1. Добавяш интервал към някаква дата и получаваш нова дата. Например - коя дата ще бъде, пет дни след като е публикуван този отговор.

2. Изваждане на дати - коя дата е било три дни преди публикуването на този отговор. Или колко дни преди крайната дата на съзтезанието, е публикуван съответния отговор.

3. Разлика между две дати (подобно на точка 2). Да кажем, че имаш датата на която се е регистрирал потребител4я и датата, когато за последно се е логнал. DATEDFF() ще ти каже колко дни има между двете дати.

4. Извличане на информация от датите. Можеш да вземеш само месеца или само годината. Можеш да вземеш името на месеца. Можеш да разбереш кой ден от седмицата е 21 август 2013 (в случая - сряда).

и какво ли още не.....

Как потребителя ще вижда датата е съвсем друг въпрос. Има си функции за форматиране, включително и базата данни може да ти форматира стойността от поле от тип дата както си пожелаеш, подобно на РНР.

[sql]select title, date_format(post_date, '%d.%m%Y') as user_date from news;[/sql]
 

Back
Горе