Каков самый простой способ отформатировать временную метку 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;

Ответ 1

Вы можете использовать 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;

Ответ 2

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

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

Ответ 3

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

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

Ответ 4

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

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

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

Ответ 5

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

Ответ 6

Я использую:

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

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

Ответ 7

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

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

Ответ 8

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