Каков самый простой способ отформатировать временную метку SQL в PHP?

Каков самый простой и быстрый способ заполнить приведенный ниже код PHP таким образом, чтобы результат был в удобном для пользователя формате (например, «27 октября 2006 г.»)?

$result = mysql_query("SELECT my_timestamp FROM some_table WHERE id=42", $DB_CONN); $row = mysql_fetch_array($result); $formatted_date = ???($row['my_timestamp']); echo $formatted_date; 

Вы можете использовать MySQL для этого,

 $result = mysql_query("SELECT DATE_FORMAT(my_timestamp, '%M %d, %Y) AS my_timestamp FROM some_table WHERE id=42", $DB_CONN); $row = mysql_fetch_array($result); $formatted_date = $row['my_timestamp']; echo $formatted_date; 

Или используйте PHP,

 $result = mysql_query("SELECT my_timestamp FROM some_table WHERE id=42", $DB_CONN); $row = mysql_fetch_array($result); $formatted_date = strftime('%B %d, %y', $row['my_timestamp']); echo $formatted_date; 

Я обычно делаю форматирование даты в SQL, как ответ Арона . Хотя для дат PHP я предпочитаю использовать объект DateTime (PHP5 +) по дате :

 $timestamp = new DateTime($row['my_timestamp']); echo $timestamp->format('F j, Y') . '<br />'; echo $timestamp->format('F j, Y g:ia'); 

Вам нужна функция date () .

Если у вас есть столбец DATE или DATETIME, вы можете использовать SELECT UNIX_TIMESTAMP (mycolumn) AS mycolumn, чтобы преобразовать его в временную метку unix для функции даты.

Вы должны определенно использовать класс DateTime (или любой дом, который стал эквивалентным классом), над функцией Date, а не использовать временные метки:

  • Временная метка не работает хорошо во всех средах для дат до 1970 года – если вы работаете с днями рождения, вы полагаетесь на код, который может ломаться на некоторых серверах
  • Будьте также очень осторожны в использовании strftime, это выглядит как хорошая функция, но она очень неоправданна, так как она зависит от setlocale, которая является общесистемной. Это означает, что если ваш сервер является окном, у вас есть один процесс на процессор, а затем остальные многопоточные – другими словами, один setlocale в одном скрипте будет влиять на другие скрипты на одном процессоре – очень неприятно !

В конце концов, не полагайтесь на временные метки, если только вы не находитесь в среде только на английском языке и имеете дело только с периодами между 1970 и 2032 годами …!

Если у вас есть таблицы, индексированные в поле этой даты, и вы используете функцию формата данных mysql в своем вызове .. (то есть SELECT DATE_FORMAT (my_timestamp, '% M% d,% Y) AS my_time), это уничтожит вашу индексацию. Что-то нужно иметь в виду. Мы видели резкое увеличение скорости при удалении всех функций из наших операторов sql и позволяя php обрабатывать все это. Функционирование, такое как даты форматирования и простая математика

Я использую:

date ("F j, Y", strtotime ($ row ['my_timestamp']))

или вы можете изменить SELECT на: DATE_FORMAT (поле, '% d% M,% Y') в качестве даты и времени

У вас есть выбор. Вы можете использовать функцию date () в PHP и обрабатывать выходные данные MySQL, или вы можете использовать функцию date_format () в MySQL и вернуть ее форматированную строку.

По моему опыту, это не имеет значения, что вы используете, но БУДЬТЕ СОГЛАСНЫ. Они имеют разные параметры форматирования, поэтому, если вы используете оба в данном приложении, вы потратите много времени, пытаясь запомнить, если «W» дает вам имя дня недели или недели года.

Создайте базу данных для форматирования. Это гораздо менее восприимчиво к ошибке, потому что вы не читаете строку и не конвертируете ее. Вместо этого база данных переходит из собственного формата в строку.