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

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.

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

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

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

Puedes usar

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

Para una descripción detallada de

  1. from_unixtime ()
  2. unix_timestamp ()
Dilraj Singh
fuente
Usaría este formato para tiempo militar "% Y-% m-% d% H% i% s"
tanner burton
3

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

León
fuente