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?
Aceptado
Utilice DATENAME
o DATEPART
:
SELECT DATENAME(dw,GETDATE()) -- Friday
SELECT DATEPART(dw,GETDATE()) -- 6
Aunque se ha aceptado la respuesta de SQLMenace , hay una SET
opció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
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