Запазване и показване на дата

misho

Registered
Сблъсках се с един проблем със записването на дата във БД. Направил съм си поле тип TIMESTAMP. Нещо явно съм се заблудил, но очаквах дата да се запише във подобен формат 4552267, което, ако не се лъжа бяха секундите от 1 януари 1970 година насам. Работата е там, че датата се записва в следния формат - 2011-09-27 21:42:54 и когато я взема от БД и я извеждам по следния начин ми излиза всъщност 01-1970, вместо 09-2011. :lol:
PHP:
date("n-Y", $news['news_time'])
 
В полето видя ли дали се е записало в timestamp формат ? Ако се е записало можеш още в заявката да обърнеш датата.


[sql]
SELECT DATE_FORMAT(`news_time`, '%m-%Y') AS `news_time` ....
[/sql]

и не знам от къде си го видял този формат n, но такъв няма, предполагам си искал да напишеш m.


@toshko не давай лоши примери. Датата е хубаво да се пази в timestamp формат.


П.П. Дай заявката, с която записваш датата в базата данни. Защото като имаш поле timestamp е добре да ползваш NOW() функцията на MySQL.
 
Защото правя записите директно чрез phpmyadmin и исках датата и часът да се записват сами чрез някоя от вградените функции, когато добавя нещо. Друг вариант има ли? Ако е varchar трябва аз да пиша датата и часа.

relax4o, добавям записите ръчно то phpmyadmin. Полето е TIMESTAMP и използвам функцията NOW. Получава се следното: 2011-09-27 21:42:54. После извеждам по следния начин:
PHP:
date("n-Y", $news['news_time'])
n-а го видях от тук - date(). :wink:
 
Направи полето varchar() и при добавяне слагай UNIX_TIMESTAMP(). При извеждането направи заявката по-горе:

[sql]
SELECT DATE_FORMAT(`news_time`, '%m-%Y') AS `news_time` ....
[/sql]
 
rombeca каза:
PHP:
$date = strtotime($row['news_time']);
$date = date("n-Y",$date);

Това ти трябва :).

Много, много няма смисъл от тези врътки. Най-добре да си сменя директно в заявката и да вади просто колоната с форматирания низ.
 
relax4o, след като записах с UNIX_TIMESTAMP, както каза, вече имам това, което исках и работи и по начина, който исках:
PHP:
date("n-Y", $news['news_time'])

Все пак реших да го форматирам още при заявката, но дадения от теб пример нещо не сработи. Не мога да си обясня защо. Просто в 'news_time' на връщания резултат няма нищо. :lol:
А ето я и заявката ми:
[sql]SELECT `news_id`, <разни други полета>, DATE_FORMAT(`news_time`, '%m-%Y') AS `news_time` FROM ...[/sql]
Пусах заявката в phpmyadmin и видях, че ми връща NULL вместо датата. :shock:
 
Май съм объркал синтаксиса. Я опитай да махнеш AS `news_time`, защото май не беше наложително, или опитай да напишеш друго име като например `time_news`.


П.П.

[sql]
SELECT ... DATE_FORMAT(FROM_UNIXTIME(`news_time`), '%m-%Y') AS `news_time` FROM ...
[/sql]


Ето така го направи ;)
 

Back
Горе