2017-08-13 83 views
1

作为星期天的第一天的星期天的SQL服务器设置,我有一个问题(并且作为阅读,它不仅仅是我)。但是我的公司需要几个星期才能覆盖周一到周日的时间。我试过SET DATEFIRST 1,但它不影响结果。一个简单的例子:今天是星期天;当我在SQL中输入以下代码,它的结果在33个星期,但它应该显示32周和33周应该从明天开始:SQL Server:星期一作为星期的开始

SET DATEFIRST 1 
Select DatePart(week, getdate()); 

我改变了语言,我的登录设置,以英式英语,位它也没有工作。有其他方法可以更改设置吗? 在大多数我的查询,我需要显示上周的结果,具有相似的where子句:

WHERE Week = (Select DatePart(week, getdate())-1) 

如果我不能全局性地更改设置,比它怎么可能转化上子句这样才能显示周一到周日的结果?我是一名SQL初学者,在互联网上搜索了一个答案,但无法调整我的代码。先谢谢你!

+0

您是否在设置SET DATEFIRST 1后试过'DATEPART(ISO_WEEK,...)'? –

+0

是的,现在它正在工作!正如你所建议的那样,我只用ISO_WEEK取代了WEEK,即使没有SET DATEFIRST 1,也会在第32周结果。也许是因为我把语言改成英式英语。非常感谢! :) –

回答

2

设置SET DATEFIRST 1后使用DATEPART(ISO_WEEK, ...)。这应该遵守ISO周编号,如DATEPART documentation中所述。

相关问题