DATENAME y para qué se usa?
DATENAME es una función que permite obtener el nombre textual de componentes específicos de una fecha, como el nombre del mes (January, February, etc.) o el nombre del día (Monday, Tuesday, etc.). La salida es una cadena de texto que representa la parte especificada de la fecha.
Usos comunes de DATENAME:
Enero, Febrero, etc.).
DATENAME
DATENAME ( datepart, date )
datepart: Especifica la parte de la fecha que se quiere obtener. Los valores permitidos incluyen:
year (yyyy, yy): Año.
quarter (qq, q): Trimestre.
month (mm, m): Nombre del mes.
dayofyear (dy, y): Día del año.
day (dd, d): Día del mes.
week (wk, ww): Semana del año.
weekday (dw, w): Nombre del día de la semana.
hour (hh): Hora.
minute (mi, n): Minuto.
second (ss, s): Segundo.
millisecond (ms): Milisegundo.
microsecond (mcs): Microsegundo.
nanosecond (ns): Nanosegundo.
date: La fecha de la cual se desea extraer el nombre de la parte. Puede ser una columna, una constante de fecha ('2024-09-27'), o la función GETDATE() para la fecha y hora actual.
DATENAME
SELECT DATENAME(month, '2024-09-27') AS NombreMes;
Resultado:
NombreMes
----------
September
La función devuelve el nombre del mes (September) para la fecha proporcionada ('2024-09-27').
SELECT DATENAME(weekday, '2024-09-27') AS NombreDia;
Resultado:
NombreDia
-----------
Friday
Este ejemplo muestra el nombre del día de la semana (Friday) para la fecha especificada.
DATENAME con la fecha actual
SELECT DATENAME(year, GETDATE()) AS AñoActual,
DATENAME(month, GETDATE()) AS MesActual,
DATENAME(weekday, GETDATE()) AS DiaActual;
Resultado (para una fecha actual del 27 de septiembre de 2024):
AñoActual | MesActual | DiaActual
----------|-----------|----------
2024 | September | Friday
Esto muestra el año, el mes y el día de la semana de la fecha actual usando GETDATE().
DATENAME para generar descripciones de fecha
Si quieres crear una cadena que muestre una descripción completa de la fecha:
SELECT 'Hoy es ' + DATENAME(weekday, GETDATE()) + ', ' +
DATENAME(day, GETDATE()) + ' de ' +
DATENAME(month, GETDATE()) + ' del ' +
DATENAME(year, GETDATE()) AS DescripcionFecha;
Resultado:
DescripcionFecha
-------------------------
Hoy es Friday, 27 de September del 2024
Este ejemplo concatena varias llamadas a DATENAME para generar un texto descriptivo de la fecha actual.
SELECT DATENAME(quarter, '2024-09-27') AS NombreTrimestre;
Resultado:
NombreTrimestre
----------------
3
La función devuelve el número del trimestre (3) para la fecha especificada ('2024-09-27').
DATENAME con datos de tablas
Si tienes una tabla Pedidos con una columna FechaPedido, puedes extraer el nombre del mes de cada pedido:
SELECT PedidoID, FechaPedido, DATENAME(month, FechaPedido) AS MesPedido
FROM Pedidos;
Resultado:
PedidoID | FechaPedido | MesPedido
---------|-------------|----------
1 | 2024-01-15 | January
2 | 2024-03-22 | March
3 | 2024-09-10 | September
Esto extrae y muestra el nombre del mes para cada pedido en la tabla.
Puedes utilizar DATENAME para comparar o filtrar datos basados en nombres de partes específicas. Por ejemplo, para encontrar pedidos realizados en un día específico de la semana:
SELECT PedidoID, FechaPedido
FROM Pedidos
WHERE DATENAME(weekday, FechaPedido) = 'Monday';
Este comando selecciona todos los pedidos que se realizaron en un lunes.
DATENAME devuelve siempre el resultado como un valor de tipo NVARCHAR.
es-ES, los nombres de días y meses se mostrarán en español (lunes, enero).
SET LANGUAGE:
SET LANGUAGE Spanish;
SELECT DATENAME(month, '2024-09-27');
Resultado:
septiembre
Para más información sobre DATENAME, consulta la documentación oficial de Microsoft.
Jorge García
Fullstack developer