Преобразование даты в mysql с помощью DATE_FORMAT()19.11.2008 сайт автора: http://webi.ru
публикация данной статьи разрешена только со ссылкой на сайт автора статьиНе большой пример, как правильно преобразовать дату хранимую в mysql. Самый быстрый и эффективный вариант.
Комментарии
RSS комментарии
16.08.2011 Михаил
Спасибо автору!
Я тоже столкнулся с проблемой преобразования даты. Хотел сделать RSS FEED статьей для моего сайта, в базе у статьей поле даты было в формате datetime но с помощью этой функций я смог преобразовать её в нужном мне формате.
Запрос через mysql select в итоге упростил мою работу и получился такой:
$query = "SELECT post_id, post_title, post_short_desc,
DATE_FORMAT(post_datetime, '%a, %e %b %Y %T') as post_datetime
FROM posts WHERE post_status='active' ORDER BY post_datetime DESC";
$res = mysql_query($query);
while ($row=mysql_fetch_array($res)) {
// Убираем из тайтла html теги и лишние пробелы
$title = strip_tags(trim($row['post_title']));
// С аноносом можно не проводить такие
// манипуляции, т.к. мы вставим его в блок CDATA
$anon = $row['post_short_body'];
$url = $row['post_id'];
//--------------------------------------------------------------------------------
$pubDate = $row['post_datetime'].' '.date('T');
// внимание здесь вопрос: как сделать так чтоб сразу с
// запроса sql вернул мне и (GMT / EST / CDT ....) что там нужно для валидности фида
// объясняю, чтоб получилось что то вроде: Tue, 16 Aug 2011 12:11:11 GMT
// сейчас она возвращает только: Tue, 16 Aug 2011 12:11:11
// а для остального я добавляю : .' '.date('T');
//--------------------------------------------------------------------------------
echo <<<END
<item>
<title>$title</title>
<description><![CDATA[$anon]]></description>
<link>http://www.castio.com/showpost.php?id=$url</link>
<guid isPermaLink="true">http://www.castio.com/showpost.php?id=$url</guid>
<pubDate>$pubDate</pubDate>
</item>
END;
}
Смотрите внимательно код выше там есть вопрос, может кто знает и поможет мне устранить эту так сказать ошибку.
У меня ещё вопрос есть, может кто поможет:
до этого я пользовался функцией
$pubDate=date("D, d M Y H:i:s T",$row['post_datetime']);
но оно выдавало ошибку вместо 2011 года выводило 1969, может я что то напутал, или не правильно её использовал. Я еще чайник в ПХП :D .
22.08.2011 Виктор
Михаил, вопросы ваши не очень понятны.
Вы хотите чтобы получилось
Tue, 16 Aug 2011 12:11:11 GMT
но у вас получается только
Tue, 16 Aug 2011 12:11:11 ?
Но отличия этих двух строк только в GMT, ну так и добавьте просто эти три буквы.
А по второму вопросу, скорее всего date не понимает такой формат, попробуйте подсунуть не конвертированный вид даты из базы
23.08.2011 Михаил
Спасибо Виктор за совет!
Я уже сделал :D! Но просто хотел знать если это было возможно сделать сразу без добавки букв "GMT".
Просто добавил .date('T'); который и возвращает мне "GMT" , "EST" или "CDT".
Спасибо всем!
18.09.2011 Артем
Уважаемые прогеры помогите с одной задачей...
мне нужно внутри постраничной навигации вывести все новости дата которых равна пришедшим методом пост данным
мне нужно запрос сформировать
у меня два запроса
SELECT COUNT(*) FROM prayers WHERE cat='$cat' AND date='2011-09-27'
и
SELECT id,title,date FROM prayers WHERE cat='$cat' date='2011-09-27' ORDER BY id LIMIT $start, $num
не работает (вместо даты должна быть переменная)
17.10.2011 виктор
Артем, в вашем втором запросе ошибка.
WHERE cat='$cat' date='2011-09-27'
перед date явно пропущено что то, скорее всего AND.
22.12.2011 Александр
Автор, спасибо большое. )
01.03.2012 Max-php
Спасибо за подсказку. После не продолжительных стараний дата приобрела удобный вид.
16.04.2012 Колян
Месяцы на русском языке:
На 5-м мускуле работает, если не ошибаюсь.
@mysql_query('SET lc_time_names = "ru_RU"');
DATE_FORMAT(date_create,'%d %b %Y %k:%i') AS date_create
Это, вроде, должно касаться и дней недели.
08.09.2012
вставил сие в свой запрос который у меня объединял данные с двух таблиц и выводил упорядоченно по убыванию исходя из даты. все сработало и дата преобразовалась. вот мой запрос кому интересно : SELECT komment.id_referendum, komment.komment, DATE_FORMAT( komment.date_kom,'%d %M %Y %T') , users.login
FROM komment, users
WHERE komment.id_user = users.id_user
AND id_referendum =1
ORDERBY date_kom DESC;
из него уже выбираю нужные данные при помощи mysql_result
16.02.2013 Димка
Легко когда нужно вытащить лишь одну дату.
А когда вытаскиваешь все поля и указываешь * вместо перечисления полей какой DATE_FORMAT вас спасет?
А если в условии нужна дата?
02.03.2013
Димка, тогда через запятую еще пишешь:
mysql_query('select *, DATE_FORMAT(date_create,'%d %b %Y %k:%i') AS date_create ...
23.04.2013 Сергей
Ребят, а подскажите пож, как мне теперь дату формата 01.01.2000 записать в базу данных через DATE_FORMAT в формате для MySQL(2000-01-01)? Или так уже не получится?
31.05.2013 Кот
Звиздец, товарищи...
Даже неполная копипаста с доков мускуля с припиской красным "не копипастить", без какого либа налета авторства...
Комменты порадовали особенно
Фейс_б"!ть_палм...
16.09.2015 Heckfy
Лучше по полной использовать функционал БД, чем писать тонны не нужного кода
11.06.2020 Krasnovosti.ru
В Delphi конструкция выглядит громоздко, но всё равно спасибо.
Пример использования в Delphi:
`from_date`=DATE_FORMAT("'+DateToStr(DateTimePicker1.Date)+'",''%Y-%m-%d'')
Добавить свой комментарий
|