Gibt es eine MySQL-Funktion, mit der ein Unix-Zeitstempel in ein lesbares Datum konvertiert werden kann? Ich habe ein Feld, in dem ich Unix-Zeiten speichere, und jetzt möchte ich ein weiteres Feld für von Menschen lesbare Daten hinzufügen.
Gibt es eine MySQL-Funktion, mit der ein Unix-Zeitstempel in ein lesbares Datum konvertiert werden kann? Ich habe ein Feld, in dem ich Unix-Zeiten speichere, und jetzt möchte ich ein weiteres Feld für von Menschen lesbare Daten hinzufügen.
Antworten:
Verwendung FROM_UNIXTIME()
:
SELECT
FROM_UNIXTIME(timestamp)
FROM
your_table;
Siehe auch: MySQL-Dokumentation zuFROM_UNIXTIME()
.
from_unixtime
: dev.mysql.com/doc/refman/5.1/en/…
TO_UNIXTIME
, aber stattdessen UNIX_TIMESTAMP
.
Was in den anderen Antworten (zum Zeitpunkt dieses Schreibens) fehlt und nicht direkt offensichtlich ist, from_unixtime
ist, dass ein zweiter Parameter erforderlich sein kann, um das Format wie folgt anzugeben:
SELECT
from_unixtime(timestamp, '%Y %D %M %H:%i:%s')
FROM
your_table
Ich denke, was Sie suchen, ist FROM_UNIXTIME()
Hier ist ein Einzeiler, wenn Sie schnellen Zugriff auf die MySQL-CLI haben:
mysql> select convert_tz(from_unixtime(1467095851), 'UTC', 'MST') as 'local time';
+---------------------+
| local time |
+---------------------+
| 2016-06-27 23:37:31 |
+---------------------+
Ersetzen Sie 'MST'
durch Ihre gewünschte Zeitzone. Ich lebe in Arizona - also die Umstellung von UTC auf MST.
Einfacher und einfacher Weg:
select from_unixtime(column_name, '%Y-%m-%d') from table_name
Da mir diese Frage nicht bewusst war, dass MySQL immer Zeit in Zeitstempelfeldern in UTC speichert, aber (z. B. phpmyadmin) in der lokalen Zeitzone angezeigt wird, möchte ich meine Ergebnisse hinzufügen.
Ich habe ein automatisch aktualisiertes Feld last_modified, definiert als:
`last_modified` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP
Wenn man es mit phpmyadmin betrachtet, sieht es so aus, als wäre es in der Ortszeit, intern ist es 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`
In jeder Konstellation werden UNIX_TIMESTAMP und 'as UTC' immer in UTC-Zeit angezeigt.
Führen Sie dies zweimal aus, ohne die Zeitzone festzulegen.