Конвертировать из даты и времени MySQL в другой формат с помощью PHP - PullRequest
420 голосов
/ 26 сентября 2008

У меня есть столбец datetime в MySQL.

Как я могу преобразовать его в дисплей как мм / дд / гг Ч: М (AM / PM) с использованием PHP?

Ответы [ 17 ]

5 голосов
/ 09 июля 2015
SELECT 
 DATE_FORMAT(demo.dateFrom, '%e.%M.%Y') as dateFrom,
 DATE_FORMAT(demo.dateUntil, '%e.%M.%Y') as dateUntil
FROM demo

Если вы не хотите изменять каждую функцию в вашем PHP-коде, чтобы показать ожидаемый формат даты, измените ее в источнике - вашей базе данных.

Важно назвать строки с оператором как , как в примере выше (как dateFrom, как dateUntil). Имена, которые вы пишете, есть имена, строки будут вызываться в вашем результате.

Выход этого примера будет

[День месяца, числовой (0..31)]. [Название месяца (январь .. декабрь)]. [Год, числовой, четыре цифры]

Пример: 5. августа 2015 г.

Измените точки с помощью выбранного разделителя и проверьте функцию DATE_FORMAT (дата, формат) для получения дополнительных форматов даты.

5 голосов
/ 23 января 2014

В зависимости от конфигурации даты и времени MySQL. Обычно: 2011-12-31 07: 55: 13 формат. Эта очень простая функция должна творить чудеса:

function datetime()
{
    return date( 'Y-m-d H:i:s', time());
}

echo datetime(); // display example: 2011-12-31 07:55:13

Или немного больше, чтобы соответствовать вопросу.

function datetime($date_string = false)
{
    if (!$date_string)
    {
        $date_string = time();
    }
    return date("Y-m-d H:i:s", strtotime($date_string));
}
3 голосов
/ 26 сентября 2008

Вы также можете сделать так, чтобы ваш запрос возвращал время в виде метки времени Unix. Это избавило бы от необходимости вызывать strtotime() и сделало бы вещи немного менее интенсивными на стороне PHP ...

select  UNIX_TIMESTAMP(timsstamp) as unixtime from the_table where id = 1234;

Тогда в PHP просто используйте функцию date(), чтобы отформатировать ее любым удобным вам способом.

<?php
  echo date('l jS \of F Y h:i:s A', $row->unixtime);
?>

или

<?php
  echo date('F j, Y, g:i a', $row->unixtime);
?>

Мне нравится этот подход, в отличие от использования MySQL DATE_FORMAT, потому что он позволяет вам повторно использовать тот же запрос для получения данных и позволяет изменять форматирование в PHP. *

Досадно иметь два разных запроса только для того, чтобы изменить внешний вид даты в пользовательском интерфейсе.

1 голос
/ 12 марта 2014

Это будет работать ...

echo date('m/d/y H:i (A)',strtotime($data_from_mysql));
1 голос
/ 23 апреля 2010

У вас могут быть проблемы с датами, которые не возвращаются в метке времени Unix, так что это работает для меня ...

return date("F j, Y g:i a", strtotime(substr($datestring, 0, 15)))
0 голосов
/ 02 декабря 2013
$date = "'".date('Y-m-d H:i:s', strtotime(str_replace('-', '/', $_POST['date'])))."'";
0 голосов
/ 21 ноября 2009

Используя PHP версии 4.4.9 и MySQL 5.0, это сработало для меня:

$oDate = strtotime($row['PubDate']);
$sDate = date("m/d/y",$oDate);
echo $sDate

PubDate - это столбец в MySQL .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...