Чи є функція MySQL, яка може бути використана для перетворення часової позначки Unix у читану людиною дату? У мене є одне поле, де я зберігаю часи Unix, і тепер я хочу додати ще одне поле для людських читаних дат.
Чи є функція MySQL, яка може бути використана для перетворення часової позначки Unix у читану людиною дату? У мене є одне поле, де я зберігаю часи Unix, і тепер я хочу додати ще одне поле для людських читаних дат.
Відповіді:
Використання FROM_UNIXTIME()
:
SELECT
FROM_UNIXTIME(timestamp)
FROM
your_table;
Дивіться також: Документація на MySQL наFROM_UNIXTIME()
.
from_unixtime
: dev.mysql.com/doc/refman/5.1/uk/…
TO_UNIXTIME
, але натомість UNIX_TIMESTAMP
.
Те, що не вистачає в інших відповідях (станом на цей текст), і не очевидно, що це from_unixtime
може прийняти другий параметр, щоб вказати такий формат:
SELECT
from_unixtime(timestamp, '%Y %D %M %H:%i:%s')
FROM
your_table
Я думаю, що ти шукаєш FROM_UNIXTIME()
Ось один лайнер, якщо у вас є швидкий доступ до 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.
Легкий і простий спосіб:
select from_unixtime(column_name, '%Y-%m-%d') from table_name
Оскільки я не знав цього питання, що 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 час.
Виконайте це двічі, спочатку без встановлення часової зони.