【发布时间】:2019-01-14 22:13:16
【问题描述】:
据我了解,DateFirst 是一周的第一天,或者一周的开始日。但是,当我运行这些查询时,我的结果与我认为我理解的不匹配
select @@datefirst,DATENAME(WEEKDAY,@@datefirst)
SELECT DATEPART(WEEKDAY,'20190113'),DATENAME(WEEKDAY,'20190113')
SELECT DATEPART(WEEKDAY,'20190114'),DATENAME(WEEKDAY,'20190114')
SELECT DATEPART(WEEKDAY,'20190115'),DATENAME(WEEKDAY,'20190115')
SELECT DATEPART(WEEKDAY,'20190116'),DATENAME(WEEKDAY,'20190116')
SELECT DATEPART(WEEKDAY,'20190117'),DATENAME(WEEKDAY,'20190117')
SELECT DATEPART(WEEKDAY,'20190118'),DATENAME(WEEKDAY,'20190118')
SELECT DATEPART(WEEKDAY,'20190119'),DATENAME(WEEKDAY,'20190119');
我明白了
7 Monday (this is the @@datefirst line)
1 Sunday
2 Monday
3 Tuesday
4 Wednesday
5 Thursday
6 Friday
7 Saturday
@@datefirst 如何给我 7 和星期天给我星期一,而 7 是星期六?这是配置问题还是我的误解?
【问题讨论】:
-
我认为这可以帮助你:stackoverflow.com/q/20031802/9940803
-
DATENAME需要一个日期作为它的参数,所以传递它7实际上是传递它7 Jan 1900,我假设它是一个Monday -
如果您没有关注
DATENAME(WEEKDAY,@@datefirst),@DaleBurrell 指的是您的这部分代码。您应该将其添加为 ander Dale :) -
另外值得注意的是
DATEPART和DATENAME为WEEKDAY返回的值是相对于@@DATEFIRST返回的值,这是绝对的,即当@@DATEFIRST是@987654335时@(总是星期天)DATEPART返回7这是星期六(这让我很困惑)。 docs.microsoft.com/en-us/sql/t-sql/functions/… -
@DaleBurrell 在以下文档中提到,如果输入与指定的日期部分不相关,它将返回默认值。查看我的答案以获取更多信息
标签: sql sql-server tsql date