@@ datefirst不如文档中所述返回结果
我读过此文档
所以我尝试了此实验,
declare @t table (test date)
insert into @t values ('20220404'), ('20220405'),('20220406'),('20220407'),('20220408'),('20220409'),('20220410')
select datename(weekday, test),
datepart(weekday, test)
from @t
它将返回此
Column1 | column2 |
---|---|
星期一 | 2 |
周四 | 星期二3 |
4星期四 | 星期四5 |
星期五 | 6 |
星期六 | 7 |
星期六 | 1 |
星期六 | 1 |
我检查了我的价值或@@ datefirst,
select @@DATEFIRST
它返回 7
那么,为什么我不如文档中所述获得这个结果呢?
第1列 | 列 |
---|---|
第 | 2 |
星期二 | 2星期一2 |
周三星期三 | 2 |
星期四 | 4 |
星期六 | 4星期五5 |
6星期六 | 6 |
星期日 | 7 |
编辑
这就是我在文档中看到的
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
我认为您可能会误解文档。 datefirst 的文档说,如您所见:
因此,
datefirst
的值确定哪个 day 被编号 1 ,< em>一周中的第一天。datefirst
设置为7,随着表继续显示, Sunday 将被视为 一周的第一天 - 天数1。在此设置中,
datePart
工作日
将返回任何星期日的1
,因为周日被视为 day一周。也许不幸的是,数字被用作
设置datefirst
的参数,因为自然会出现这种混乱。如果我们可以说设置DateFirst Sunday
使我们的含义很明显,但不幸的是,这不是语法,那可能会很不错。I think you may be misunderstanding the docs. The docs for
DATEFIRST
say, as you've seen:So, the value of
DATEFIRST
determines which day gets numbered 1, the first day of the week. WithDATEFIRST
set to 7, as the table goes on to show, Sunday will be considered the first day of the week - day number 1.With that setting,
DATEPART
forweekday
will return1
for any Sunday, because Sunday is considered the first day of the week.It is perhaps unfortunate that numbers are used as the argument to
SET DATEFIRST
, since naturally this confusion arises. It might have been nice if we could saySET DATEFIRST Sunday
to make it obvious what we mean, but unfortunately that's not the syntax.