Volver a la página principal
viernes 27 septiembre 2024
54

Cómo obtener el nombre de partes de una fecha con DATENAME en SQL Server

¿Qué es 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:

  • Extraer el nombre del mes para generar reportes (Enero, Febrero, etc.).
  • Obtener el nombre del día de la semana para organizar eventos o analizar patrones.
  • Mostrar las partes de la fecha en un formato más legible para usuarios finales.

Sintaxis de 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.

Ejemplos de uso de DATENAME

Obtener el nombre del mes de una fecha

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').

Obtener el nombre del día de la semana

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.

Usar 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().

Combinar 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.

Obtener el nombre del trimestre de una fecha

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').

Usar 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.

Comparar fechas basadas en nombres de partes

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.

Consideraciones importantes

  • La función DATENAME devuelve siempre el resultado como un valor de tipo NVARCHAR.
  • El valor devuelto depende de la configuración de idioma de la sesión actual. Por ejemplo, si la configuración de idioma es es-ES, los nombres de días y meses se mostrarán en español (lunes, enero).
  • Para un mejor control sobre el formato, asegúrate de configurar la sesión con el idioma adecuado usando SET LANGUAGE:
SET LANGUAGE Spanish;
  SELECT DATENAME(month, '2024-09-27');

Resultado:

septiembre

Referencia oficial

Para más información sobre DATENAME, consulta la documentación oficial de Microsoft.

Compartir:
Creado por:
Author photo

Jorge García

Fullstack developer