Come convertire data / ora in datetime in MySQL?


133

Come convertire 1300464000da 2011-03-18 16:00:00in MySQL?


2
Cerca domande / risposte esistenti prima di pubblicare una nuova domanda: questo argomento è già stato trattato in dettaglio.
John Parker,

2
Hai già dato un'occhiata alla documentazione? È tutto lì: dev.mysql.com/doc/refman/5.5/en/date-and-time-functions.html
Felix Kling

Risposte:


200

Utilizzare la FROM_UNIXTIME()funzione in MySQL

Ricorda che se stai usando un framework che lo memorizza in millisecondi (ad esempio il timestamp di Java) devi dividere per 1000 per ottenere il tempo Unix giusto in secondi.


1
SELECT from_unixtime( TIMESTAMP( "2011-12-01", "22:01:23.048" ) )non funziona perché? usando v5.6
Janus Troelsen il

3
@JanusTroelsen SELECT from_unixtime( unix_timestamp(TIMESTAMP( "2011-12-01", "22:01:23.048" ) ) )funziona. TIMESTAMP()non restituisce un valore intero.
cnvzmxcvmcx,

4
Solo perché l'ho fatto ed ero confuso all'output: MySQL memorizza il tempo Unix in secondi, mentre molti altri framework lo memorizzano in millisecondi (ovvero il timestamp di Java). Quindi ricorda di dividere per 1000 se stai usando questa funzione su dati provenienti da qualche parte che utilizza millis per il tempo Unix.
Chris Thompson,

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

Questa è la soluzione definitiva se la data specificata è in un formato codificato come 1300464000


3
Grazie per questo. Per includere l'ora: DATE_FORMAT(FROM_UNIXTIME(`orderdate`), '%d-%m-%Y %H:%i:%s') as "Date" FROM `orders`
JNP Web Developer

Sono abbastanza sicuro che DATE_FORMAT (FROM_UNIXTIME ( orderdate), '% Y-% m-% d') in quanto "Date" FROM orderssarebbe la soluzione definitiva: D
Kyle,

14

Per rispondere al commento di Janus Troelsen

Utilizzare UNIX_TIMESTAMP invece di TIMESTAMP

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

La funzione TIMESTAMP restituisce una data o un DateTime e non un timestamp, mentre UNIX_TIMESTAMP restituisce un timestamp unix


sembra chiaro confrontare un tempo unix da un tempo unix. Uso SELECT (CAST (DATE_FORMAT (from_unixtime (UNIX_TIMESTAMP (CURRENT_TIMESTAMP)), '% Y-% m-% d') come DATE) <CAST ('2019-05-02' AS DATE)); per confrontare le date, sostituisco 2019-05 * 02 un oggetto datetime formattato in php. Thnaks.
Mantisse,

1
Non rispondere in questo modo a una domanda diversa da quella originale.
Paweł Stankowski

Questo non risponde in alcun modo alla domanda originale
Nico Haase


3

SELECT from_unixtime( UNIX_TIMESTAMP(fild_with_timestamp) ) from "your_table"
Questo lavoro per me

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.