我正在使用日期,因此我创建了一个生成SQL表日历的函数,该日历返回Day,Month,WeekOfMonth,WeekOfYear等。 现在,对于Day of Month字段,我使用以下函数:
-- [WkNo]=Week number
[WkNo] = DATEPART(week,dt.DT),
但问题是,当我在安装了Language = US English的SQL上运行时,周设置错误,因为周从星期日开始。 我需要设置从星期一开始的一周,是否可以不使用DATEPART?
答案 0 :(得分:2)
更新:根据提问者的评论,他无法使用DATEFIRST
方法我正在更新答案。
注意:
这个答案本质上是通用的。
如果您希望星期二从星期二开始,而不是星期一,则可以将dateadd(dd,-1,dt.DT)
更改为dateadd(dd,-2,dt.DT)
,将星期三更改为dateadd(dd,-3,dt.DT)
。
对于 1 (星期一)到 6 (星期六)的 n 值,基本上公式变为dateadd(dd,-n,dt.DT)
。< / p>
SELECT [WkNo]=
ISNULL(DATEPART(week,
case
when Year(dt.DT)>YEAR(dateadd(dd,-1,dt.DT))
then null
else dateadd(dd,-1,dt.DT)
end
),1)
请参阅工作小提琴http://sqlfiddle.com/#!6/10a80/14
旧答案: 请参阅MSDN文档:https://msdn.microsoft.com/en-us/library/ms174420.aspx
当datepart是星期(wk,ww)或工作日(dw)时,返回值 取决于使用SET DATEFIRST设置的值。 1月1日 任何年份定义星期datepart的起始编号 例如:DATEPART(周刊,&#39; 1月1日,xxxx&#39;)= 1,其中xxxx是任何一年。
SET DATEFIRST 1
-- [WkNo]=Week number
[WkNo] = DATEPART(week,dt.DT),
答案 1 :(得分:0)
试
<ui-select-choices ng-repeat="baseCurrency in baseCurrencies track by baseCurrency.flagCode | searchFilter:{name:$select.search}" >
您的查询:
SET DATEFIRST {1,2,3,4,5,6,7(default, U.S. English)}
请参阅Here