SQL DATES: Formato de fechas en SQL

Siempre que sus datos contengan solo la parte de la fecha, sus consultas funcionarán como se espera. Sin embargo, si se trata de una porción de tiempo, se vuelve más complicado.


SQL Tipos de datos de fechas (SQL Date Data Types)

SQL Server viene con los siguientes tipos de datos para almacenar una fecha o un valor de fecha/hora en la base de datos:

DATE - formato YYYY-MM-DD
DATETIME - formato: YYYY-MM-DD HH:MI:SS
SMALLDATETIME - formato: YYYY-MM-DD HH:MI:SS
TIMESTAMP - formato: Un número único

Utilizar fechas y date data types en SQL

Mira la siguiente tabla:

Pedido_IDNombre_ProductoFecha_Pedido
1zapatillas Nike Air2022-11-14
2Zapatillas Lotto2022-11-15
3Zapatillas Asics2022-11-16
4zapatillas Adidas2022-11-14

Ahora queremos seleccionar los registros con una fecha de pedido de "2022-11-14" de la tabla anterior.

Usamos la siguiente instrucción SELECT:

SELECT * 
FROM Pedidos
WHERE Fecha_Pedido='2022-11-14';

El conjunto de resultados sería este:

Pedido_IDNombre_ProductoFecha_Pedido
1zapatillas Nike Air2022-11-14
4zapatillas Adidas2022-11-14

Importante: ¡Dos fechas se pueden comparar fácilmente si no hay un componente de tiempo involucrado!

Ahora, suponga que la tabla "Pedidos" se ve así (observe el componente de tiempo agregado en la columna "Fecha_Pedido"):

Pedido_IDNombre_ProductoFecha_Pedido
1zapatillas Nike Air2022-11-14 14:21:13
2Zapatillas Lotto2022-11-15 10:05:32
3Zapatillas Asics2022-11-16 20:09:12
4zapatillas Adidas2022-11-14 18:06:54

Si usamos la misma instrucción SELECT que la anterior:

SELECT * 
FROM Pedidos
WHERE Fecha_Pedido='2022-11-14';

¡No obtendremos ningún resultado! Esto se debe a que la consulta que hemos realizado tiene en el filtro where un formato DATE y el formato de la tabla anterior es DATETIME.

Consejo: para mantener sus consultas simples y fáciles de mantener, no use componentes de tiempo en sus fechas, ¡a menos que sea necesario!