Problema
La conversión de marca de tiempo Unix de fecha y hora, manteniendo milisegundos.
Antecedentes
Estoy recibiendo marca de tiempo Unix en el siguiente formato:
- 1584049707
Entonces estoy tratando de enviarla por medio de PHP a una columna en MySQL que está datetime(3)
utilizando TO_TIMESTAMP()
. También he intentado FROM_UNIXTIME()
, pero con los mismos resultados.
SQL
$sql = "
INSERT INTO assoc_table (timestart, timeend)
VALUES (TO_TIMESTAMP(:timestart), TO_TIMESTAMP(:timeend))
";
Resultado
- 12/03/2020 22: 42: 23.000
Por alguna razón, no registra los milisegundos.
Resultado deseado
- Para obtener los milisegundos de la marca de tiempo Unix y en la columna de fecha y hora.
Marcas de tiempo Epoch representan entonces número de segundos transcurridos desde el 1 de enero de, 1970; si quieres secons fraccionarias, se necesita tener una parte fraccionaria ... lo cual no es el caso de la entrada que se le da a MySQL; esto se refleja a continuación, en los resultados que usted está recibiendo.
Dada una marca de tiempo época con una parte fraccionaria, from_unixtime()
funciona como se espera:
select from_unixtime(1584049707.123)
Devoluciones:
2020-03-12 21:48:27.123
Nota: datetime(3)
es el formato relevante para almacenar dicho valor.