Obtener el día de la semana en SQL Server 2005/2008

Resuelto asked hace 15 años • 11 respuestas

Si tengo una fecha 01/01/2009, quiero saber qué día fue, por ejemplo, lunes, martes, etc...

¿Existe una función integrada para esto en SQL Server 2005/2008? ¿O necesito utilizar una mesa auxiliar?

 avatar Jul 11 '09 00:07
Aceptado

Utilice DATENAMEo DATEPART:

SELECT DATENAME(dw,GETDATE()) -- Friday
SELECT DATEPART(dw,GETDATE()) -- 6
SQLMenace avatar Jul 10 '2009 17:07 SQLMenace

Aunque se ha aceptado la respuesta de SQLMenace , hay una SETopción importante que debe tener en cuenta

FIJAR FECHA PRIMERO

DATENAME devolverá el nombre de fecha correcto pero no el mismo valor DATEPART si el primer día de la semana se cambió como se ilustra a continuación.

declare @DefaultDateFirst int
set @DefaultDateFirst = @@datefirst
--; 7 First day of week is "Sunday" by default
select  [@DefaultDateFirst] = @DefaultDateFirst 
    
set datefirst @DefaultDateFirst
select datename(dw,getdate()) -- Saturday
select datepart(dw,getdate()) -- 7

--; Set the first day of week to * TUESDAY * 
--; (some people start their week on Tuesdays...)
set datefirst 2
select datename(dw,getdate()) -- Saturday
--; Returns 5 because Saturday is the 5th day since Tuesday.
--; Tue 1, Wed 2, Th 3, Fri 4, Sat 5
select datepart(dw,getdate()) -- 5 <-- It's not 7!
set datefirst @DefaultDateFirst
dance2die avatar Jul 11 '2009 14:07 dance2die
SELECT  CASE DATEPART(WEEKDAY,GETDATE())  
    WHEN 1 THEN 'SUNDAY' 
    WHEN 2 THEN 'MONDAY' 
    WHEN 3 THEN 'TUESDAY' 
    WHEN 4 THEN 'WEDNESDAY' 
    WHEN 5 THEN 'THURSDAY' 
    WHEN 6 THEN 'FRIDAY' 
    WHEN 7 THEN 'SATURDAY' 
END
Sutirth avatar Mar 29 '2012 20:03 Sutirth