如何通过在SQL Server中传递'ddd'格式来检索'WEEKDAY'部分?
例如,如果我传递'tue'并且响应将为3,则为beacuse
1 - 星期天 2 - 星期一 3 - 星期二
......就像那样。
通过执行以下查询,我获得了当前日期的'WEEKDAY'。
select DATEPART(WEEKDAY, GETDATE())
答案 0 :(得分:3)
这将返回符合当前DATEFIRST
设置的给定短日期名称的日期编号。
--Example day name
DECLARE @Day CHAR(3) = 'Tue'
SELECT
DATEPART(WEEKDAY,DATEADD(DAY, Number, GETDATE())) DayNumber
FROM
master..spt_values N
WHERE
N.type = 'P' AND N.number BETWEEN 1 AND 7
AND DATENAME(WEEKDAY,DATEADD(DAY, Number, GETDATE())) LIKE @Day+'%'
答案 1 :(得分:0)
您可以尝试类似于此
SELECT *
FROM (
SELECT 1 PK ,'Sunday' Value UNION
SELECT 2,'Monday' UNION
SELECT 3,'Tuesday' UNION
...
SELECT 7,'Saturday'
) T WHERE T.[Value] LIKE '%tue%'
答案 2 :(得分:0)
试试这个:
SELECT datepart(weekday,getdate()), datename(dw, getdate())
考虑到ISO_WEEK规则
,这将返回当天的工作日和名称答案 3 :(得分:0)
这将为您提供不依赖于@@datefirst
或langauge
设置的工作日
select [weekday] = case @weekday_name
when 'Sun' then (7 - @@datefirst + 0) % 7 + 1
when 'Mon' then (7 - @@datefirst + 1) % 7 + 1
when 'Tue' then (7 - @@datefirst + 2) % 7 + 1
when 'Wed' then (7 - @@datefirst + 3) % 7 + 1
when 'Thu' then (7 - @@datefirst + 4) % 7 + 1
when 'Fri' then (7 - @@datefirst + 5) % 7 + 1
when 'Sat' then (7 - @@datefirst + 6) % 7 + 1
end