Конвертируйте метку времени Unix в удобочитаемую дату, используя MySQL - PullRequest
195 голосов
/ 07 июня 2011

Существует ли функция MySQL, которую можно использовать для преобразования метки времени Unix в удобочитаемую дату?У меня есть одно поле, в котором я сохраняю время Unix, и теперь я хочу добавить другое поле для удобочитаемых дат.

Ответы [ 8 ]

345 голосов
/ 07 июня 2011

Использование FROM_UNIXTIME():

SELECT
  FROM_UNIXTIME(timestamp) 
FROM 
  your_table;

См. Также: Документация MySQL по FROM_UNIXTIME().

95 голосов
/ 11 ноября 2013

Чего не хватает в других ответах (на момент написания этой статьи), и не очевидно, что from_unixtime может принять второй параметр для указания формата следующим образом:

SELECT
  from_unixtime(timestamp, '%Y %D %M %H:%i:%s')
FROM 
  your_table
31 голосов
/ 07 июня 2011

Я думаю, что вы ищете FROM_UNIXTIME()

18 голосов
/ 28 июня 2016

Нужна метка времени Unix в определенном часовом поясе?

Вот один вкладыш, если у вас есть быстрый доступ к mysql cli:

mysql> select convert_tz(from_unixtime(1467095851), 'UTC', 'MST') as 'local time';

+---------------------+
| local time          |
+---------------------+
| 2016-06-27 23:37:31 |
+---------------------+

Замените 'MST' на нужный вам часовой пояс.Я живу в Аризоне, таким образом, преобразование из UTC в MST.

6 голосов
/ 07 июня 2011

Зачем беспокоиться о сохранении поля как читабельного? Только у нас AS

SELECT theTimeStamp, FROM_UNIXTIME(theTimeStamp) AS readableDate
               FROM theTable
               WHERE theTable.theField = theValue;

РЕДАКТИРОВАТЬ: Извините, мы храним все в миллисекундах, а не секундах. Исправлено.

4 голосов
/ 07 июня 2011

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

0 голосов
/ 21 декабря 2018

Поскольку я обнаружил, что этот вопрос не знает, что mysql всегда сохраняет время в полях меток времени в UTC, но будет отображать (например, phpmyadmin) в местном часовом поясе, я хотел бы добавить свои выводы.

У меня есть автоматически обновляемое поле last_modified, определенное как:

`last_modified` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP

Глядя на это с помощью phpmyadmin, он выглядит как по местному времени, внутренне это UTC

SET time_zone = '+04:00'; // or '+00:00' to display dates in UTC or 'UTC' if time zones are installed.
SELECT last_modified, UNIX_TIMESTAMP(last_modified), from_unixtime(UNIX_TIMESTAMP(last_modified), '%Y-%c-%d %H:%i:%s'), CONVERT_TZ(last_modified,@@session.time_zone,'+00:00') as UTC FROM `table_name`

В любом созвездии UNIX_TIMESTAMP и «как UTC» всегда отображаются во времени UTC.

Запустите это дважды, сначала без установки часового пояса.

0 голосов
/ 03 октября 2018

Простой и простой способ:

select from_unixtime(column_name, '%Y-%m-%d') from table_name

...