SQL Server:通过以'ddd'格式传递日期来选择'WEEKDAY'部分

时间:2016-03-22 06:50:12

标签: sql-server

如何通过在SQL Server中传递'ddd'格式来检索'WEEKDAY'部分?

例如,如果我传递'tue'并且响应将为3,则为beacuse

1 - 星期天 2 - 星期一 3 - 星期二

......就像那样。

通过执行以下查询,我获得了当前日期的'WEEKDAY'。

select DATEPART(WEEKDAY, GETDATE())

4 个答案:

答案 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规则

,这将返回当天的工作日和名称

More detail here

答案 3 :(得分:0)

这将为您提供不依赖于@@datefirstlangauge设置的工作日

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