¿Cómo convertir la marca de tiempo a fecha y hora en MySQL?


133

¿Cómo convertir 1300464000a 2011-03-18 16:00:00MySQL?


2
Busque las preguntas / respuestas existentes antes de publicar una nueva pregunta; este tema ya se ha cubierto con cierto detalle.
John Parker

2
¿Ya has visto la documentación? Todo está allí: dev.mysql.com/doc/refman/5.5/en/date-and-time-functions.html
Felix Kling

Respuestas:


200

Use la FROM_UNIXTIME()función en MySQL

Recuerde que si está utilizando un marco que lo almacena en milisegundos (por ejemplo, la marca de tiempo de Java) debe dividir por 1000 para obtener el tiempo correcto de Unix en segundos.


1
SELECT from_unixtime( TIMESTAMP( "2011-12-01", "22:01:23.048" ) )no funciona ¿por qué? usando v5.6
Janus Troelsen

3
@JanusTroelsen SELECT from_unixtime( unix_timestamp(TIMESTAMP( "2011-12-01", "22:01:23.048" ) ) )funciona. TIMESTAMP()no devuelve un valor entero.
cnvzmxcvmcx

44
Solo porque hice esto y me confundí en el resultado: MySQL almacena el tiempo de Unix en segundos, mientras que muchos otros marcos lo almacenan en milisegundos (es decir, la marca de tiempo de Java). Así que solo recuerde dividir por 1000 si está usando esta función en datos que provienen de algún lugar que usa millis por tiempo Unix.
Chris Thompson

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

Esta es la solución definitiva si la fecha dada está en formato codificado como 1300464000


3
Gracias por esto. Para incluir el tiempo: DATE_FORMAT(FROM_UNIXTIME(`orderdate`), '%d-%m-%Y %H:%i:%s') as "Date" FROM `orders`
Desarrollador web JNP

Estoy bastante seguro de que DATE_FORMAT (FROM_UNIXTIME ( orderdate), '% Y-% m-% d') como "Fecha" FROM orderssería la solución definitiva: D
Kyle

14

Para responder el comentario de Janus Troelsen

Use UNIX_TIMESTAMP en lugar de TIMESTAMP

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

La función TIMESTAMP devuelve una fecha o una fecha y hora y no una marca de tiempo, mientras que UNIX_TIMESTAMP devuelve una marca de tiempo de Unix


parece claro comparar un tiempo unix de un tiempo unix. Yo uso SELECT (CAST (DATE_FORMAT (from_unixtime (UNIX_TIMESTAMP (CURRENT_TIMESTAMP))), '% Y-% m-% d') como DATE) <CAST ('2019-05-02' AS DATE)); para comparar fechas, reemplazo 2019-05 * 02 un objeto de fecha y hora formateado en php. Thnaks
Mantisse

1
Por favor, no responda de esta manera a una pregunta diferente a la original.
Paweł Stankowski

Esto no responde a la pregunta original de ninguna manera
Nico Haase


3

SELECT from_unixtime( UNIX_TIMESTAMP(fild_with_timestamp) ) from "your_table"
Este trabajo para mi

Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.