@@DATEFIRST 未返回文档中所述的结果

Gui*_*doG 1 t-sql sql-server date sql-server-2019

我已阅读此文档

所以我尝试了这个实验

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
Run Code Online (Sandbox Code Playgroud)

它返回这个

第一栏 第2栏
周一 2
周二 3
周三 4
周四 5
星期五 6
周六 7
星期日 1

我检查了我的值或@@DATEFIRST

select @@DATEFIRST
Run Code Online (Sandbox Code Playgroud)

它返回7

那么为什么我没有得到文档中描述的结果呢?

第一栏 第2栏
周一 1
周二 2
周三 3
周四 4
星期五 5
周六 6
星期日 7

编辑

这是我在文档中看到的

在此输入图像描述

Aak*_*shM 5

我认为您可能误解了文档。正如您所见,文档是这样说的DATEFIRST

设置一周的第一天

因此, 的值DATEFIRST决定哪一天编号1,即一周的第一天。DATEFIRST设置为 7 时,如表所示,星期日将被视为一周的第一天 - 第 1 天。

在这种设置下,DATEPARTforweekday将在任何星期日返回1,因为星期日被视为一周的第一天。


也许不幸的是,数字被用作 的参数SET DATEFIRST,因为自然会出现这种混乱。SET DATEFIRST Sunday如果我们能够让我们的意思变得显而易见,那就太好了,但不幸的是这不是语法。