php - obtener - MySQL: ¿Cuál es el mejor uso, Unix TimeStamp o DATETIME
timestamp php mysql (4)
A menos que digitalice registros antes del 1 de enero de 1970, me gusta la época de UNIX. Es solo una cuestión de preferencia, los números sin firmar completos son más fáciles de manejar cuando se usan varios idiomas.
Solo tenga en cuenta que la época comienza el 1 de enero de 1970. Muchas compañías habían estado en el negocio durante décadas, si no más, antes de eso.
Esta pregunta ya tiene una respuesta aquí:
Probablemente muchos codificadores quieren hacer esta pregunta. es ¿Cuáles son las ventajas de cada uno de esos formatos de tiempo de MySQL? y cuál preferirás usar en tus aplicaciones.
Para mí, uso la marca de tiempo de Unix porque tal vez me resulte fácil convertir y ordenar registros con él, y también porque nunca probé el DATETIME. pero de todos modos estoy listo para cambiar de opinión si alguien me dice que estoy equivocado.
Gracias
Como han dicho otros, las marcas de tiempo pueden representar un rango menor de tiempos de datos (desde 1970 hasta 2038). Sin embargo, las marcas de tiempo miden el número de segundos desde la época de Unix (1970-01-01 00:00:00 UTC), lo que los hace independientes de la zona horaria, mientras que DATETIME almacena una fecha y hora sin una zona horaria. En otras palabras, las marcas de tiempo hacen referencia sin ambigüedad a un punto particular en el tiempo, mientras que el punto exacto en el tiempo al que se refiere DATETIME requiere una zona horaria (que no está almacenada en un campo DATETIME). Para ver por qué esto puede importar, considere qué sucede si cambiamos nuestra zona horaria.
Digamos que queremos almacenar el datetime 2010-03-27 12:00 UTC. Si almacenamos esto y lo recuperamos usando una marca de tiempo o DATETIME, entonces generalmente no parece haber diferencia. Sin embargo, si el servidor cambia ahora para que la zona horaria local sea UTC + 01, obtenemos dos resultados diferentes si extraemos la fecha y hora.
Si estableciéramos el campo en DATETIME, informaría la fecha y hora como 2010-03-27 12:00, a pesar del cambio en la zona horaria. Si estableciéramos el campo en una marca de tiempo, la fecha se informaría como 2010-03-27 11:00. Este no es un problema con ninguno de los tipos de datos, es solo el hecho de que almacenan información ligeramente diferente.
Eso realmente depende. Te daré 2 ejemplos donde uno supera al otro:
La marca de tiempo es mejor que DATETIME cuando desea almacenar la sesión de los usuarios en la base de datos y la hora de creación de la sesión (en formato de marca de tiempo) se utiliza para la recuperación rápida de filas (con índice).
Por ejemplo, la mesa puede verse así:
[session_create_time AS Timestamp][IP_address AS 32bit Int][etc...]
Tener un índice en las dos primeras columnas realmente puede acelerar sus consultas. Si tenía un tipo de valor DATETIME para el campo session_create_time
, entonces podría tomarse mucho más tiempo. Tenga en cuenta que las consultas de sesión se ejecutan cada vez que un usuario solicita una página , por lo que la eficiencia es crucial.
DATETIME es mejor que la marca de tiempo cuando desea almacenar la fecha de nacimiento de un usuario o algunos eventos históricos que requieren un intervalo de tiempo flexible.
La marca de tiempo (tanto las de PHP como las de MySQL) se almacenan utilizando enteros de 32 bits (es decir, 4 bytes) ; lo que significa que están limitados a un intervalo de fechas que va desde 1970 hasta 2038.
DATETIME
no tiene esa limitación, pero se almacena utilizando más bytes (8 bytes, si no me equivoco)
Después, entre las marcas de tiempo de almacenamiento como se ve por PHP, o las marcas de tiempo como se ve por MySQL:
- el uso de marcas de tiempo de PHP significa que las manipulaciones son más fáciles desde PHP - vea Funciones de fecha / hora
- el uso de las marcas de tiempo de MySQL significa que las manipulaciones son más fáciles desde MySQL - ver 11.6. Funciones de fecha y hora
Y, para obtener más información entre los tipos de datos TIMESTAMP
y DATETIME
MySQL, consulte 10.3.1. Los tipos DATETIME, DATE y TIMESTAMP