DATETIME vs TIMESTAMP en MySQL
-
Similitudes de
DATETIME
yTIMESTAMP
-
Diferencias de
DATETIME
yTIMESTAMP
-
Ejemplo para entender el uso de
DATETIME
yTIMESTAMP
en MySQL - Conclusión
DATETIME
y TIMESTAMP
son dos tipos de datos diferentes que puede usar para almacenar un valor que debe contener la parte de fecha y hora.
En este artículo aprenderemos sobre el formato en el que se almacena en la base de datos y la memoria requerida por cada tipo de datos. También veremos las similitudes y diferencias de ambos tipos de datos y trataremos de entender a través de un ejemplo.
Similitudes de DATETIME
y TIMESTAMP
DATETIME
y TIMESTAMP
tienen algunas similitudes que se enumeran a continuación:
- Ambos almacenan el mismo tipo de datos, con dos partes (fecha y hora).
- Ambos tienen el mismo formato a la hora de consultarlos.
- El formato de almacenamiento en la base de datos es el mismo (
YYYY-MM-DD hh:mm:ss
). - Ambos necesitan bytes adicionales para obtener una precisión de fracciones de segundo.
- Cada vez que se actualizan los registros, ambos pueden cambiar los datos con la fecha y hora actual.
Diferencias de DATETIME
y TIMESTAMP
DATETIME
y TIMESTAMP
tienen las siguientes diferencias:
DATETIME
yTIMESTAMP
requieren 5 bytes y 4 bytes, respectivamente.TIMESTAMP
se ve afectado por la zona horaria, peroDATETIME
permanece constante.- El rango admitido para
DATETIME
yTIMESTAMP
es'1000-01-01 00:00:00'
a'9999-12-31 23:59:59'
y'1970-01-01 00:00:01'UTC
a'2038-01-19 03:14:07' UTC
, respectivamente. DATETIME
no se puede indexar mientras queTIMESTAMP
sí.- Las consultas con
TIMESTAMP
se almacenarán en caché, pero no es el caso conDATETIME
.
Ejemplo para entender el uso de DATETIME
y TIMESTAMP
en MySQL
Supongamos que tiene una cafetería en su país. Cada cliente recibe una factura después de pagar la factura.
Esta factura tiene fecha y hora además de otros detalles. Como está administrando la tienda en su país solo donde todos sus clientes estarán en la misma zona horaria, usará DATETIME
.
Cambiemos un poco este escenario; ahora tienes diez cafeterías en varios países, cada país tiene su zona horaria. Los clientes también recibirán facturas allí, pero ¿cómo puede mostrar la fecha y la hora de acuerdo con la zona horaria de los clientes?
Aquí usarás TIMESTAMP
. ¿Por qué? Debido a que TIMESTAMP
se ve afectado por la zona horaria, lo que significa que el valor de TIMESTAMP
se convertirá de la zona horaria actual (hora del servidor) a UTC (zona horaria universal) para el almacenamiento y de vuelta a la zona horaria actual (hora del servidor). ) en la recuperación.
Código de ejemplo:
Ejecute el siguiente código en su MySQL (estamos usando MySQL 8.0.27 para este tutorial) y vea el resultado que se muestra después del código.
#create schema
CREATE SCHEMA db_practice_datetime_timestamp;
#create table
CREATE TABLE practice_datetime_and_timestamp (
ID INT AUTO_INCREMENT PRIMARY KEY,
DATE_TIME DATETIME,
TIME_STAMP TIMESTAMP
);
#insert data
INSERT INTO practice_datetime_and_timestamp(TIME_STAMP,DATE_TIME)
VALUES(NOW(),NOW());
#read data
SELECT DATE_TIME, TIME_STAMP from practice_datetime_and_timestamp;
Producción:
Ahora, ejecute el código que se proporciona a continuación y vea su resultado.
SET time_zone = '-05:00';
SELECT DATE_TIME, TIME_STAMP from practice_datetime_and_timestamp;
Producción:
Es posible que haya notado que la hora ha cambiado para la columna TIME_STAMP
, pero los datos para DATE_TIME
siguen siendo los mismos.
Conclusión
En esta discusión, hemos concluido que DATETIME
y TIMESTAMP
almacenan los mismos datos según sus necesidades. Si desea que sus datos se vean afectados por la zona horaria, vaya a TIMESTAMP
. De lo contrario, es bueno usar DATETIME
.