Wie konvertiere ich einen Zeitstempel in datetime in MySQL?

133

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

Compile-Fan
quelle
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.

Richard Tuin
quelle
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

Kingshuk Deb
quelle
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

ksvendsen
quelle
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
7

Sie können verwenden

select from_unixtime(1300464000,"%Y-%m-%d %h %i %s") from table;

Für eine detaillierte Beschreibung von

  1. from_unixtime ()
  2. unix_timestamp ()
Dilraj Singh
quelle
Ich würde dieses Format für die Militärzeit "% Y-% m-% d% H% i% s" verwenden
Gerber Burton
3

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

Löwe
quelle