Есть ли функция MySQL, которая может использоваться для преобразования временной метки Unix в человекообразную дату? У меня есть одно поле, где я сохраняю время Unix, и теперь я хочу добавить другое поле для человекочитаемых дат.
Преобразовать временную метку Unix в человеко-читаемую дату с использованием MySQL
Ответ 1
Используйте FROM_UNIXTIME()
:
SELECT
FROM_UNIXTIME(timestamp)
FROM
your_table;
Смотрите также: Документация MySQL по FROM_UNIXTIME()
.
Ответ 2
Чего не хватает в других ответах (на момент написания этой статьи) и не очевидно, так это в том, что from_unixtime
может принимать второй параметр для указания формата следующим образом:
SELECT
from_unixtime(timestamp, '%Y %D %M %H:%i:%s')
FROM
your_table
Ответ 3
Я думаю, что вы ищете FROM_UNIXTIME()
Ответ 4
Нужна временная метка 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.
Ответ 5
Зачем беспокоиться о сохранении поля как удобочитаемого? Просто мы AS
SELECT theTimeStamp, FROM_UNIXTIME(theTimeStamp) AS readableDate
FROM theTable
WHERE theTable.theField = theValue;
РЕДАКТИРОВАТЬ: Извините, мы храним все в миллисекундах, а не секундах. Починил это.
Ответ 6
Вы можете использовать функцию DATE_FORMAT. Здесь страница с примерами и шаблоны, которые вы можете использовать для выбора разных компонентов даты.
Ответ 7
Простой и простой способ:
select from_unixtime(column_name, '%Y-%m-%d') from table_name
Ответ 8
Поскольку я обнаружил, что этот вопрос не знает, что 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.
Запустите это дважды, сначала без установки часового пояса.