Wie konvertiere ich einen Zeitstempel in datetime in MySQL?


133

Wie konvertiert man 1300464000zu 2011-03-18 16:00:00in MySQL?


2
Bitte suchen Sie nach vorhandenen Fragen / Antworten, bevor Sie eine neue Frage stellen. Dieses Thema wurde bereits ausführlich behandelt.
John Parker

2
Haben Sie sich die Dokumentation schon angesehen? Es ist alles da: dev.mysql.com/doc/refman/5.5/en/date-and-time-functions.html
Felix Kling

Antworten:


200

Verwenden Sie die FROM_UNIXTIME()Funktion in MySQL

Denken Sie daran, dass Sie, wenn Sie ein Framework verwenden, das es in Millisekunden speichert (z. B. Javas Zeitstempel) , durch 1000 dividieren müssen , um die richtige Unix-Zeit in Sekunden zu erhalten.


1
SELECT from_unixtime( TIMESTAMP( "2011-12-01", "22:01:23.048" ) )funktioniert nicht Warum? mit v5.6
Janus Troelsen

3
@ JanusTroelsen SELECT from_unixtime( unix_timestamp(TIMESTAMP( "2011-12-01", "22:01:23.048" ) ) )funktioniert. TIMESTAMP()gibt keinen ganzzahligen Wert zurück.
cnvzmxcvmcx

4
Nur weil ich dies getan habe und bei der Ausgabe verwirrt war: MySQL speichert die Unix-Zeit in Sekunden, während viele andere Frameworks sie in Millisekunden speichern (dh Javas Zeitstempel). Denken Sie also daran, durch 1000 zu teilen, wenn Sie diese Funktion für Daten verwenden, die von einem Ort stammen, der Millis für die Unix-Zeit verwendet.
Chris Thompson

64
DATE_FORMAT(FROM_UNIXTIME(`orderdate`), '%Y-%m-%d %H:%i:%s') as "Date" FROM `orders`

Dies ist die ultimative Lösung, wenn das angegebene Datum wie in einem codierten Format vorliegt 1300464000


3
Danke dafür. Um die Zeit DATE_FORMAT(FROM_UNIXTIME(`orderdate`), '%d-%m-%Y %H:%i:%s') as "Date" FROM `orders`
einzuschließen

Ich bin mir ziemlich sicher, dass DATE_FORMAT (FROM_UNIXTIME ( orderdate), '% Y-% m-% d') als "Date" FROM ordersdie ultimative Lösung wäre: D
Kyle

14

Um Janus Troelsen Kommentar zu beantworten

Verwenden Sie UNIX_TIMESTAMP anstelle von TIMESTAMP

SELECT from_unixtime( UNIX_TIMESTAMP(  "2011-12-01 22:01:23.048" ) )

Die TIMESTAMP-Funktion gibt ein Datum oder eine DateTime und keinen Zeitstempel zurück, während UNIX_TIMESTAMP einen Unix-Zeitstempel zurückgibt


Es scheint klar zu sein, eine Unix-Zeit mit einer Unix-Zeit zu vergleichen. Ich verwende SELECT (CAST (DATE_FORMAT (from_unixtime (UNIX_TIMESTAMP (CURRENT_TIMESTAMP)), '% Y-% m-% d') als DATE) <CAST ('2019-05-02' AS DATE)); Um Daten zu vergleichen, ersetze ich 2019-05 * 02 ein formatiertes Datum / Uhrzeit-Objekt in PHP. Thnaks.
Mantisse

1
Bitte beantworten Sie auf diese Weise nicht die andere Frage als die ursprüngliche.
Paweł Stankowski

Dies beantwortet die ursprüngliche Frage in keiner Weise
Nico Haase


3

SELECT from_unixtime( UNIX_TIMESTAMP(fild_with_timestamp) ) from "your_table"
Diese Arbeit für mich

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.