Comment convertir un horodatage en datetime dans MySQL?


Réponses:


200

Utilisez la FROM_UNIXTIME()fonction dans MySQL

N'oubliez pas que si vous utilisez un framework qui le stocke en millisecondes (par exemple l'horodatage de Java), vous devez diviser par 1000 pour obtenir le bon temps Unix en secondes.


1
SELECT from_unixtime( TIMESTAMP( "2011-12-01", "22:01:23.048" ) )ne fonctionne pas. Pourquoi? en utilisant v5.6
Janus Troelsen

3
@JanusTroelsen SELECT from_unixtime( unix_timestamp(TIMESTAMP( "2011-12-01", "22:01:23.048" ) ) )fonctionne. TIMESTAMP()ne renvoie pas de valeur entière.
cnvzmxcvmcx

4
Juste parce que j'ai fait cela et que j'ai été confus à la sortie: MySQL stocke l'heure Unix en secondes, alors que beaucoup d'autres frameworks la stockent en millisecondes (c'est-à-dire l'horodatage de Java). N'oubliez donc pas de diviser par 1000 si vous utilisez cette fonction sur des données provenant d'un endroit qui utilise des millis pour l'heure Unix.
Chris Thompson

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

C'est la solution ultime si la date donnée est au format encodé comme 1300464000


3
Merci pour cela. Pour inclure l'heure: DATE_FORMAT(FROM_UNIXTIME(`orderdate`), '%d-%m-%Y %H:%i:%s') as "Date" FROM `orders`
JNP Web Developer

Je suis presque sûr que DATE_FORMAT (FROM_UNIXTIME ( orderdate), '% Y-% m-% d') comme "Date" FROM ordersserait la solution ultime: D
Kyle

14

Pour répondre au commentaire de Janus Troelsen

Utilisez UNIX_TIMESTAMP au lieu de TIMESTAMP

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

La fonction TIMESTAMP renvoie une Date ou une DateHeure et non un horodatage, tandis que UNIX_TIMESTAMP renvoie un horodatage unix


semble clair pour comparer une heure unix à une heure unix. J'utilise SELECT (CAST (DATE_FORMAT (from_unixtime (UNIX_TIMESTAMP (CURRENT_TIMESTAMP)), '% Y-% m-% d') comme DATE) <CAST ('2019-05-02' AS DATE)); pour comparer les dates, je remplace 2019-05 * 02 un objet datetime formaté en php. Thnaks.
Mantisse

1
Veuillez ne pas répondre de cette façon à la question différente de celle d'origine.
Paweł Stankowski

Cela ne répond en aucun cas à la question initiale
Nico Haase


3

SELECT from_unixtime( UNIX_TIMESTAMP(fild_with_timestamp) ) from "your_table"
Ce travail pour moi

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.