SQL DateFunciones


Fechas SQL

NoteCuando 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

NoteSi 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:

SELECT * FROM Orders WHERE OrderDate='2008-11-11'

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