Published on

November 24, 2020

Explorando las funciones de fecha y hora en SQL Server

SQL Server proporciona una amplia gama de funciones de fecha y hora que le permiten manipular y analizar datos temporales de manera efectiva. En este artículo, exploraremos algunas de las funciones de fecha y hora más comúnmente utilizadas en SQL Server y aprenderemos cómo utilizarlas en sus consultas.

Fecha actual, hora o zona horaria

Uno de los requisitos básicos al trabajar con datos de fecha y hora es recuperar la fecha, hora o zona horaria actual. SQL Server proporciona varias funciones para lograr esto:

SELECT 
  GETDATE() AS FechaHoraActual,
  DATEPART(YEAR, GETDATE()) AS AñoActual,
  DATEPART(MONTH, GETDATE()) AS MesActual,
  DATEPART(DAY, GETDATE()) AS DíaActual,
  DATEPART(HOUR, GETDATE()) AS HoraActual,
  DATEPART(MINUTE, GETDATE()) AS MinutoActual,
  DATEPART(SECOND, GETDATE()) AS SegundoActual,
  DATEPART(MILLISECOND, GETDATE()) AS MilisegundoActual,
  DATEPART(MICROSECOND, GETDATE()) AS MicrosegundoActual,
  SYSDATETIMEOFFSET() AS FechaHoraActualConDesplazamiento,
  SYSDATETIME() AS FechaHoraActualSinDesplazamiento,
  CURRENT_TIMESTAMP AS MarcaDeTiempoActual,
  CURRENT_TIME AS HoraActual,
  CURRENT_DATE AS FechaActual,
  CURRENT_TIMEZONE() AS ZonaHorariaActual;

La consulta anterior demuestra varias funciones para recuperar la fecha, hora y zona horaria actual. La función GETDATE() devuelve la fecha y hora actual, mientras que la función DATEPART le permite extraer partes específicas de la fecha y hora, como año, mes, día, hora, minuto, segundo, milisegundo y microsegundo.

La función SYSDATETIMEOFFSET() devuelve la fecha y hora actual con el desplazamiento de la zona horaria, mientras que la función SYSDATETIME() devuelve la fecha y hora actual sin el desplazamiento de la zona horaria. La función CURRENT_TIMESTAMP es equivalente a SYSDATETIME() y devuelve la fecha y hora actual sin el desplazamiento de la zona horaria.

La función CURRENT_TIME devuelve la hora actual, CURRENT_DATE devuelve la fecha actual y CURRENT_TIMEZONE() devuelve la zona horaria actual.

Categorías de fecha

Cuando se trabaja con datos de fecha, a menudo es útil extraer partes específicas de la fecha, como año, mes, día, semana o trimestre. SQL Server proporciona funciones para realizar estas operaciones:

SELECT 
  FechaPedido,
  YEAR(FechaPedido) AS AñoPedido,
  MONTH(FechaPedido) AS MesPedido,
  DAY(FechaPedido) AS DíaPedido,
  DATEPART(WEEK, FechaPedido) AS SemanaPedido,
  DATEPART(QUARTER, FechaPedido) AS TrimestrePedido
FROM 
  Ventas.Pedidos;

La consulta anterior demuestra cómo extraer varias partes de la fecha de la columna FechaPedido en la tabla Ventas.Pedidos. La función YEAR devuelve el año, MONTH devuelve el mes, DAY devuelve el día, DATEPART(WEEK, FechaPedido) devuelve el número de semana y DATEPART(QUARTER, FechaPedido) devuelve el número de trimestre.

Funciones de día

SQL Server proporciona funciones para determinar el día del año, el día del mes y el día de la semana para una fecha dada:

SELECT 
  FechaPedido,
  DATEPART(DAYOFYEAR, FechaPedido) AS DíaDelAño,
  DATEPART(DAY, FechaPedido) AS DíaDelMes,
  DATEPART(WEEKDAY, FechaPedido) AS DíaDeLaSemana
FROM
  Ventas.Pedidos;

La consulta anterior demuestra cómo utilizar la función DATEPART para extraer el día del año, el día del mes y el día de la semana de la columna FechaPedido en la tabla Ventas.Pedidos.

Funciones de cadena a fecha

A veces, es posible que necesite convertir una representación de cadena de una fecha o marca de tiempo en un tipo de datos de fecha o marca de tiempo. SQL Server proporciona funciones para realizar esta conversión:

SELECT 
  CONVERT(DATE, '2023-11-17') AS ValorFecha,
  CONVERT(DATETIME, '2023-11-17 10:30:00') AS ValorFechaHora,
  CONVERT(DATETIMEOFFSET, '2023-11-17 10:30:00 -07:00') AS ValorFechaHoraZonaHoraria

La consulta anterior demuestra cómo utilizar la función CONVERT para convertir una representación de cadena de una fecha o marca de tiempo en el tipo de datos correspondiente. CONVERT(DATE, '2023-11-17') convierte la cadena ‘2023-11-17’ en un tipo de datos DATE, CONVERT(DATETIME, '2023-11-17 10:30:00') convierte la cadena ‘2023-11-17 10:30:00’ en un tipo de datos DATETIME y CONVERT(DATETIMEOFFSET, '2023-11-17 10:30:00 -07:00') convierte la cadena ‘2023-11-17 10:30:00 -07:00’ en un tipo de datos DATETIMEOFFSET.

Cálculos de fecha

SQL Server proporciona funciones para realizar varios cálculos de fecha, como calcular la diferencia entre dos fechas, extraer partes específicas de una fecha y formatear fechas:

SELECT 
  DATEDIFF(DAY, '2023-11-01', '2023-11-17') AS DíasEntre,
  DATEADD(MONTH, 3, '2023-11-17') AS TresMesesDespués,
  DATEPART(WEEKDAY, '2023-11-17') AS DíaDeLaSemana,
  FORMAT('2023-11-17', 'dddd') AS NombreDíaDeLaSemana

La consulta anterior demuestra cómo utilizar la función DATEDIFF para calcular el número de días entre dos fechas, la función DATEADD para agregar un número especificado de meses a una fecha, la función DATEPART para extraer el día de la semana de una fecha y la función FORMAT para formatear una fecha como un día de la semana específico.

Aritmética de fechas

SQL Server proporciona funciones para realizar operaciones aritméticas con fechas, como agregar o restar días, meses o años:

SELECT 
  DATEADD(DAY, 1, GETDATE()) AS Mañana,
  DATEADD(MONTH, 1, GETDATE()) AS PróximoMes,
  DATEADD(YEAR, 1, GETDATE()) AS PróximoAño

La consulta anterior demuestra cómo utilizar la función DATEADD para agregar un número especificado de días, meses o años a la fecha actual.

Partes de fecha vs. Truncamiento de fecha

SQL Server proporciona funciones para extraer partes específicas de una fecha o truncar una fecha a la parte más cercana:

SELECT 
  DATEPART(YEAR, GETDATE()) AS AñoActual,
  DATEPART(MONTH, GETDATE()) AS MesActual,
  DATEPART(DAY, GETDATE()) AS DíaActual,
  DATEPART(HOUR, GETDATE()) AS HoraActual,
  DATEPART(MINUTE, GETDATE()) AS MinutoActual,
  DATEPART(SECOND, GETDATE()) AS SegundoActual,
  DATEPART(MILLISECOND, GETDATE()) AS MilisegundoActual,
  DATEPART(MICROSECOND, GETDATE()) AS MicrosegundoActual,
  DATEFROMPARTS(2023, 11, 17) AS FechaDesdePartes,
  EOMONTH(GETDATE()) AS ÚltimoDíaDelMes,
  DATEADD(DAY, 1, DATEADD(MONTH, DATEDIFF(MONTH, 0, GETDATE()), 0)) AS PrimerDíaDelMes,
  DATEADD(HOUR, DATEDIFF(HOUR, 0, GETDATE()), 0) AS InicioDeLaHora

La consulta anterior demuestra cómo utilizar la función DATEPART para extraer partes específicas de una fecha, como año, mes, día, hora, minuto, segundo, milisegundo y microsegundo. La función DATEFROMPARTS le permite crear una fecha a partir de partes individuales, como año, mes y día. La función EOMONTH devuelve el último día del mes para una fecha dada, mientras que la función DATEADD se puede utilizar para truncar una fecha a la parte más cercana, como el primer día del mes o el inicio de una hora.

Conclusión

Trabajar con datos de fecha y hora es una tarea común en SQL Server. Al comprender y utilizar las diversas funciones de fecha y hora proporcionadas por SQL Server, puede manipular y analizar datos temporales de manera efectiva en sus consultas. En este artículo, exploramos algunas de las funciones de fecha y hora más comúnmente utilizadas, incluyendo la recuperación de la fecha, hora o zona horaria actual, la extracción de partes de fecha, la realización de cálculos de fecha, la conversión de cadenas a fechas y la realización de operaciones aritméticas con fechas.

Tener un buen entendimiento de estas funciones mejorará en gran medida su capacidad para trabajar con datos de fecha y hora en SQL Server y le permitirá resolver problemas empresariales complejos de manera eficiente.

Click to rate this post!
[Total: 0 Average: 0]

Let's work together

Send us a message or book free introductory meeting with us using button below.