Konvertieren Sie den Unix-Zeitstempel mit MySQL in ein lesbares Datum


222

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.


1
Datums- und Uhrzeitfunktionen im mySQL-Handbuch
Pekka

Antworten:



108

Was in den anderen Antworten (zum Zeitpunkt dieses Schreibens) fehlt und nicht direkt offensichtlich ist, from_unixtimeist, 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

20
Sehr kleines Problem, aber% h sind Stunden im 12-Stunden-Format, für die der Vollständigkeit halber% p erforderlich ist (AM / PM). Oder% H gibt Stunden im 24-Stunden-Format an.
Bis


19

Benötigen Sie einen Unix-Zeitstempel in einer bestimmten Zeitzone?

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.


7

Warum das Feld als lesbar speichern? Nur wirAS

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

EDIT: Sorry, wir speichern alles in Millisekunden, nicht in Sekunden. Behoben.


4

Sie können die Funktion DATE_FORMAT verwenden. Hier ist eine Seite mit Beispielen und den Mustern, mit denen Sie verschiedene Datumskomponenten auswählen können.


1

Einfacher und einfacher Weg:

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


1

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.

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.