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_ID | Nombre_Producto | Fecha_Pedido |
---|---|---|
1 | zapatillas Nike Air | 2022-11-14 |
2 | Zapatillas Lotto | 2022-11-15 |
3 | Zapatillas Asics | 2022-11-16 |
4 | zapatillas Adidas | 2022-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_ID | Nombre_Producto | Fecha_Pedido |
---|---|---|
1 | zapatillas Nike Air | 2022-11-14 |
4 | zapatillas Adidas | 2022-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_ID | Nombre_Producto | Fecha_Pedido |
---|---|---|
1 | zapatillas Nike Air | 2022-11-14 14:21:13 |
2 | Zapatillas Lotto | 2022-11-15 10:05:32 |
3 | Zapatillas Asics | 2022-11-16 20:09:12 |
4 | zapatillas Adidas | 2022-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!