Вывод форматированной даты из результата запроса MySQL

Скриптопись на PHP

Вывод форматированной даты из результата запроса MySQL

Сообщение Mihold » 29 апр 2010, 15:40

Долго я мучался с выводом даты в нужном мне формате из выборки из базы и недавно меня озарило решение. Правда оно подходит для дат от 1 января 1970 года, но для большинства случаев этот критерий неважен.
Все оказалось очень просто:
при составлении запроса используем функцию UNIX_TIMESTAMP
Код: Выделить всё
SELECT UNIX_TIMESTAMP(log_date) AS log_date_unixts FROM table1

и получаем на выходе дату в UNIXформате, а затем в PHP выводим с форматированием
Код: Выделить всё
$strSQL = "SELECT UNIX_TIMESTAMP(log_date) AS log_date_unixts FROM table1";
$rsTmp = mysql_query($strSQL, $main_db) or die("SQL Error: " . mysql_error());
$row = mysql_fetch_array($rsTmp);
echo 'Дата:', date('d.m.Y' ,$row['log_date_unixts']);
mysql_free_result($rsTmp);

не забывайте про ограничения, если дата будет более ранняя от 1 января 1970 года, то функция UNIX_TIMESTAMP() вернет 0 и соответственно при форматировании PHP все равно выведет 1 января 1970 года.
Аватара пользователя
Mihold
Компьютерщик
 
Сообщения: 1682
Зарегистрирован: 29 апр 2009, 15:01
Откуда: Харків

Re: Вывод форматированной даты из результата запроса MySQL

Сообщение Mihold » 01 май 2010, 15:30

Лучше поздно чем никогда! :)
Но озарение таки снизошло и выразилось в виде вопроса - а зачем форматировать дату в PHP когда с этим справится и MySQL?..
И вот как это теперь будет выглядеть
Код: Выделить всё
$strSQL = "SELECT DATE_FORMAT(log_date, '%d.%m.%Y') AS log_date FROM table1";
$rsTmp = mysql_query($strSQL, $main_db) or die("SQL Error: " . mysql_error());
$row = mysql_fetch_array($rsTmp);
echo 'Дата:', $row['log_date'];
mysql_free_result($rsTmp);
Аватара пользователя
Mihold
Компьютерщик
 
Сообщения: 1682
Зарегистрирован: 29 апр 2009, 15:01
Откуда: Харків


Вернуться в PHP

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 1

cron