Las funciones de fecha en T-SQL (Transact-SQL) son herramientas fundamentales para cualquiera que trabaje con bases de datos Microsoft SQL Server.
Permiten: obtener información temporal, calcular diferencias, sumar intervalos y organizar datos por tiempo. Algo esencial en proyectos reales como: reportes, control de asistencia, ventas, métricas de rendimiento y más.
En esta guía encontrará las funciones más importantes, explicadas con ejemplos simples y también con uso en consultas con GROUP BY.
Contenido
- Objetivo del laboratorio
GETDATE(): Fecha y hora actualDATEPART(): Extrae partes específicas de una fechaDATEDIFF(): Calcula diferencias entre fechasDATEADD(): Suma intervalos de tiempoEOMONTH(): Último día del mes- Actividades sugeridas
- Descargar explicación
Objetivo
En este laboratorio aprenderá a cómo obtener la fecha actual, extraer partes específicas de una fecha, calcular diferencias entre periodos, agregar intervalos y determinar el final de un mes. El objetivo es que al finalizar pueda reconocer cuándo y cómo usar cada función de fecha y disponga de una base sólida para incorporarlas a sus propios reportes o procedimientos almacenados.
GETDATE(): Fecha y hora actual
Devuelve la fecha y hora actual del sistema. Su uso común es para mostrar la fecha actual en reportes y logs
Ejemplo simple:
SELECT GETDATE() AS FechaActual;
Ejemplo con GROUP BY:
SELECT YEAR(GETDATE()) AS Anno, COUNT(*) AS Total
FROM Empleados
GROUP BY YEAR(GETDATE());
DATEPART(): Extrae partes específicas de una fecha
Permite obtener una parte concreta de una fecha: día, mes, año, semana, trimestre, etc. Su uso común podría ser para generar reportes mensuales, trimestrales o semanales.
Ejemplo simple:
-- Día del mes (1 a 31)
SELECT DATEPART(DAY, '2025-10-08') AS Dia;
-- Mes (1 a 12)
SELECT DATEPART(MONTH, '2025-10-08') AS Mes;
-- Año (ej. 2025)
SELECT DATEPART(YEAR, '2025-10-08') AS Anno;
-- Semana del año (1 a 52)
SELECT DATEPART(WEEK, '2025-10-08') AS Semana;
-- Cuarto del año (1 a 4)
SELECT DATEPART(QUARTER, '2025-10-08') AS Cuarto;
-- Día de la semana (1 = domingo, 7 = sábado por defecto)
SELECT DATEPART(WEEKDAY, '2025-10-08') AS DiaSemana;
-- Día calendario del año (1 a 365/366)
SELECT DATEPART(DAYOFYEAR, '2025-10-08') AS DiaDelAño;
Ejemplo con GROUP BY:
SELECT DATEPART(MONTH, FechaIngreso) AS MesIngreso,
COUNT(*) AS Total
FROM Empleados
GROUP BY DATEPART(MONTH, FechaIngreso);
DATEDIFF(): Calcula diferencias entre fechas
Sirve para calcular el tiempo transcurrido entre dos fechas en la unidad que elijas (día, mes, año, etc.). Unos ejemplos de usos comunes serían: calcular edad, antigüedad o días de diferencia entre eventos.
Ejemplo simple:
SELECT DATEDIFF(DAY, '2025-01-01', '2025-10-08') AS DiasTranscurridos;
Ejemplo con GROUP BY:
SELECT EmpleadoID,
DATEDIFF(YEAR, FechaNacimiento, GETDATE()) AS Edad
FROM Empleados
GROUP BY EmpleadoID, FechaNacimiento;
DATEADD(): Suma intervalos de tiempo
Permite agregar o restar unidades de tiempo (días, meses, años, etc.) a una fecha. Ejemplos comunes serían: programar fechas futuras o recordar vencimientos.
Ejemplo simple:
SELECT DATEADD(DAY, 30, '2025-10-08') AS FechaFutura;
Ejemplo con GROUP BY:
SELECT DepartamentoID,
DATEADD(MONTH, 1, MAX(FechaIngreso)) AS ProximaEvaluacion
FROM Empleados
GROUP BY DepartamentoID;
EOMONTH(): Último día del mes
Devuelve el último día del mes de una fecha determinada. Usos comunes podrían ser: reportes de fin de mes, cierres contables o control de pagos.
Ejemplo simple:
SELECT EOMONTH('2025-10-08') AS FinDeMes;
Ejemplo con GROUP BY:
SELECT DepartamentoID,
EOMONTH(MAX(FechaIngreso)) AS FinMesIngreso
FROM Empleados
GROUP BY DepartamentoID;
Actividades sugeridas
Descargar memoficha
Lleva esta explicación contigo: descárgala en forma de memoficha.
Clic aquí para ver y descargar el archivo