SQL DateFunciones
Fechas SQL
Cuando trabajamos con fechas, la tarea más difícil probablemente sea asegurar que el formato de las fechas insertadas coincida con el formato de la columna de fecha en la base de datos.
Siempre que sus datos contengan solo la parte de la fecha, ejecutar consultas no será un problema. Sin embargo, si se involucra la parte de la hora, la situación se vuelve un poco más compleja.
Antes de discutir la complejidad de las consultas de fechas, veamos primero las funciones integradas de manejo de fechas más importantes.
Funciones de fecha de MySQL
La siguiente tabla enumera las funciones de fecha integradas más importantes en MySQL:
| Función | Descripción |
|---|---|
| NOW() | Devuelve la fecha y hora actuales |
| CURDATE() | Devuelve la fecha actual |
| CURTIME() | Devuelve la hora actual |
| DATE() | Extrae la parte de fecha de una expresión de fecha o fecha/hora |
| EXTRACT() | Devuelve partes individuales de una fecha/hora |
| DATE_ADD() | Añade un intervalo de tiempo especificado a una fecha |
| DATE_SUB() | Resta un intervalo de tiempo especificado de una fecha |
| DATEDIFF() | Devuelve el número de días entre dos fechas |
| DATE_FORMAT() | Muestra una fecha/hora en diferentes formatos |
Funciones de fecha de SQL Server
La siguiente tabla enumera las funciones de fecha integradas más importantes en SQL Server:
| Función | Descripción |
|---|---|
| GETDATE() | Devuelve la fecha y hora actuales |
| DATEPART() | Devuelve partes individuales de una fecha/hora |
| DATEADD() | Añade o resta un intervalo de tiempo especificado a/de una fecha |
| DATEDIFF() | Devuelve el tiempo entre dos fechas |
| CONVERT() | Muestra una fecha/hora en diferentes formatos |
Tipos de datos de fecha SQL
MySQLUtilice los siguientes tipos de datos para almacenar valores de fecha o fecha/hora en la base de datos:
- DATE - Formato: YYYY-MM-DD
- DATETIME - Formato: YYYY-MM-DD HH:MM:SS
- TIMESTAMP - Formato: YYYY-MM-DD HH:MM:SS
- YEAR - Formato: YYYY o YY
SQL ServerUtilice los siguientes tipos de datos para almacenar valores de fecha o fecha/hora en la base de datos:
- DATE - Formato: YYYY-MM-DD
- DATETIME - Formato: YYYY-MM-DD HH:MM:SS
- SMALLDATETIME - Formato: YYYY-MM-DD HH:MM:SS
- TIMESTAMP - Formato: número único
Nota:Cuando crea una nueva tabla en la base de datos, ¡debe elegir un tipo de datos para las columnas!
Para conocer todos los tipos de datos disponibles, visite nuestro completomanual de referencia de tipos de datos。
Manejo de fechas SQL
Si no está involucrada la parte de la hora, ¡podemos comparar dos fechas fácilmente!
Supongamos que tenemos la tabla "Orders" como la siguiente:
| OrderId | ProductName | OrderDate |
|---|---|---|
| 1 | Geitost | 2008-11-11 |
| 2 | Camembert Pierrot | 2008-11-09 |
| 3 | Mozzarella di Giovanni | 2008-11-11 |
| 4 | Mascarpone Fabioli | 2008-10-29 |
Ahora, queremos seleccionar de la tabla anterior los registros cuyo OrderDate sea "2008-11-11".
Usamos la siguiente sentencia SELECT:
El conjunto de resultados se muestra a continuación:
| OrderId | ProductName | OrderDate |
|---|---|---|
| 1 | Geitost | 2008-11-11 |
| 3 | Mozzarella di Giovanni | 2008-11-11 |
Ahora, supongamos que la tabla "Orders" se ve así (observe la parte de la hora en la columna "OrderDate"):
| OrderId | ProductName | OrderDate |
|---|---|---|
| 1 | Geitost | 2008-11-11 13:23:44 |
| 2 | Camembert Pierrot | 2008-11-09 15:45:21 |
| 3 | Mozzarella di Giovanni | 2008-11-11 11:12:01 |
| 4 | Mascarpone Fabioli | 2008-10-29 14:56:59 |
Si usamos la misma sentencia SELECT de arriba:
SELECT * FROM Orders WHERE OrderDate='2008-11-11' o SELECT * FROM Orders WHERE OrderDate='2008-11-11 00:00:00'
¡Entonces no obtendremos resultados! Porque en la tabla no existe la fecha "2008-11-11 00:00:00". Si no hay parte de hora, la hora predeterminada es 00:00:00.
Consejo:Si desea que las consultas sean simples y fáciles de mantener, ¡no utilice la parte de la hora en las fechas!
Otras extensiones