@@ datefirst不如文档中所述返回结果

发布于 2025-01-19 05:56:01 字数 2474 浏览 0 评论 0 原文

我读过此文档

所以我尝试了此实验,

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

编辑

这就是我在文档中看到的

“

I have read this documentation

So I tried this experiment

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

it returns this

COLUMN1 COLUMN2
Monday 2
Tuesday 3
Wednesday 4
Thursday 5
Friday 6
Saturday 7
Sunday 1

I checked my value or @@DATEFIRST

select @@DATEFIRST

it returns 7

So why do I not get this result then as described in the docs?

COLUMN1 COLUMN2
Monday 1
Tuesday 2
Wednesday 3
Thursday 4
Friday 5
Saturday 6
Sunday 7

EDIT

this is what I see in the docs

enter image description here

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

不及他 2025-01-26 05:56:01

我认为您可能会误解文档。 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:

Sets the first day of the week

So, the value of DATEFIRST determines which day gets numbered 1, the first day of the week. With DATEFIRST 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 for weekday will return 1 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 say SET DATEFIRST Sunday to make it obvious what we mean, but unfortunately that's not the syntax.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文