3 回答
TA贡献1859条经验 获得超6个赞
使用DATENAME或DATEPART:
SELECT DATENAME(dw,GETDATE()) -- Friday
SELECT DATEPART(dw,GETDATE()) -- 6
TA贡献1810条经验 获得超5个赞
即使SQLMenace的答案已被接受,SET您也应该注意一个重要的选择
设置日期
如果一周的第一天已更改,则DATENAME将返回正确的日期名称,但返回的DATEPART值将不同,如下所示。
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
TA贡献1817条经验 获得超6个赞
要获得给定日期的星期几的确定性值,可以结合使用DATEPART ()和@@ datefirst。否则,您将取决于服务器上的设置。
请访问以下站点以获得更好的解决方案:MS SQL:星期几
这样,星期几将在0到6之间,其中0是星期日,1是星期一,依此类推。然后,您可以使用简单的case语句返回正确的工作日名称。
添加回答
举报