2010-08-04 3 views
0

Каков правильный способ конвертировать из mysql timestamp (YYYY-MM-DD HH: MM: SS) в мой собственный формат, что-то вроде «5 августа 2010 г.»? Как я могу сделать mysql timestamp php date() совместимым?mysql timestamp conversion

ответ

4

Есть два способа ...

Во-первых, вы можете сделать это в PHP с strtotime() ...

$time = strtotime('2010-05-05 05:05:05'); 
echo date('F j, Y', $time); 

Или, вы можете преобразовать его в UNIX время в MySQL с UNIX_TIMESTAMP():

SELECT UNIX_TIMESTAMP(`your timestamp column`) FROM blahblah.... 

Затем вы должны отформатировать его с помощью date() в php после его получения.

Или, вы можете сделать все вещи прямо в MySQL с DATE_FORMAT():

SELECT DATE_FORMAT(`your timestamp column`, '%M %e, %Y') FROM ... 
+0

плохая идея, чтобы сделать это с MySQL. Вы находитесь во власти любого временного пояса, который выбирает ваша база данных, которая может быть или не быть тем, что использует PHP (не говоря уже о том, что, скорее всего, он не будет иметь обновленные данные о часовом поясе). – Artefacto

+1

@Artefacto Неплохая идея. На самом деле, это ОЧЕНЬ хорошая идея. Фактически, я доверяю MySQL только датам (из-за репликации и балансировки нагрузки). Это может привести к головным болям, если вы смешаете PHP с MySQL, но пока вы либо выбираете один, либо придерживаетесь его, либо проверяете правильно, вы будете в порядке ... – ircmaxell

+0

Что? Вы доверяете MySQL датами *, потому что * репликации и балансировки нагрузки? Что делать с репликацией и балансировкой нагрузки, чтобы сделать что-то вроде синтаксического анализа/форматирования даты? Смешивание PHP и MySQL - это рецепт для бедствия и доверия только к MySQL, но не намного лучше (он правильно обрабатывает временные интервалы, летнее время и правильное изменение правил и может ли его правила постоянно обновляться [в течение года?] (http://derickrethans.nl/storing-date-time-in-database.html)). – Artefacto

1

Вы можете иметь MySQL вернуть его в качестве временной метки Epoch которой функция дата РНР может обрабатывать или использовать следующую функцию:

$epoch = strtotime('YYYY-MM-DD HH:MM:SS');

php Manual: strtotime

1

Третий вариант: использовать функцию в MySQL DATE_FORMAT() (хотя я предпочитаю ircmaxell пробираться)