Czy istnieje funkcja MySQL, której można użyć do przekształcenia uniksowego znacznika czasu w datę czytelną dla człowieka? Mam jedno pole, w którym zapisuję czasy uniksowe, a teraz chcę dodać kolejne pole dla dat czytelnych dla ludzi.
Czy istnieje funkcja MySQL, której można użyć do przekształcenia uniksowego znacznika czasu w datę czytelną dla człowieka? Mam jedno pole, w którym zapisuję czasy uniksowe, a teraz chcę dodać kolejne pole dla dat czytelnych dla ludzi.
Odpowiedzi:
Użyj FROM_UNIXTIME()
:
SELECT
FROM_UNIXTIME(timestamp)
FROM
your_table;
Zobacz także: Dokumentacja MySQL naFROM_UNIXTIME()
.
from_unixtime
: dev.mysql.com/doc/refman/5.1/en/…
TO_UNIXTIME
, ale zamiast tego UNIX_TIMESTAMP
.
Czego brakuje w innych odpowiedziach (jak na ten tekst) i nie jest bezpośrednio oczywiste, że from_unixtime
można wziąć drugi parametr, aby określić format tak:
SELECT
from_unixtime(timestamp, '%Y %D %M %H:%i:%s')
FROM
your_table
Myślę, że to, czego szukasz FROM_UNIXTIME()
Oto jeden linijka, jeśli masz szybki dostęp do mysql cli:
mysql> select convert_tz(from_unixtime(1467095851), 'UTC', 'MST') as 'local time';
+---------------------+
| local time |
+---------------------+
| 2016-06-27 23:37:31 |
+---------------------+
Zamień 'MST'
na żądaną strefę czasową. Mieszkam w Arizonie 🌵 więc konwersja z UTC do MST.
Łatwy i prosty sposób:
select from_unixtime(column_name, '%Y-%m-%d') from table_name
Ponieważ nie zauważyłem tego pytania, mysql zawsze przechowuje czas w polach znaczników czasu w UTC, ale wyświetla (np. Phpmyadmin) w lokalnej strefie czasowej, chciałbym dodać moje ustalenia.
Mam automatycznie aktualizowane pole last_modified, zdefiniowane jako:
`last_modified` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP
Patrząc na to z phpmyadminem, wygląda na to, że jest w czasie lokalnym, wewnętrznie jest to 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`
W dowolnej konstelacji UNIX_TIMESTAMP i „as UTC” są zawsze wyświetlane w czasie UTC.
Uruchom to dwukrotnie, najpierw bez ustawiania strefy czasowej.