Comment convertir un horodatage en datetime dans MySQL?

133

Comment convertir 1300464000à 2011-03-18 16:00:00MySQL?

compilation-fan
la source
2
Veuillez rechercher les questions / réponses existantes avant de publier une nouvelle question - ce sujet a déjà été abordé en détail.
John Parker
2
Avez-vous déjà consulté la documentation? Tout y est: dev.mysql.com/doc/refman/5.5/en/date-and-time-functions.html
Felix Kling
2
duplication possible de l' horodatage
John Parker

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.

Richard Tuin
la source
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

Kingshuk Deb
la source
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

ksvendsen
la source
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
7

Vous pouvez utiliser

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

Pour en détails la description de

  1. from_unixtime ()
  2. unix_timestamp ()
Dilraj Singh
la source
J'utiliserais ce format pour le temps militaire "% Y-% m-% d% H% i% s"
tanner burton le
3

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

Leo
la source