【发布时间】:2013-08-28 19:21:52
【问题描述】:
我正在寻找与DATEPART(WEEK, @date) 等效的SQL Server UDF,但允许调用者指定一周的第一天。有点类似于 MySql 的WEEK 函数。例如:
CREATE FUNCTION Week (@date date, @firstdayofweek int)
RETURNS int
BEGIN
-- return result would be the same as:
-- SET DATEFIRST @firstdayofweek
-- DATEPART(WEEK, @date)
END
我的应用程序没有机会调用SET DATEFIRST。
例子:
SELECT Week('2013-08-28', 2) -- returns 35
SELECT Week('2013-08-28', 3) -- returns 36
无论 SQL Server 的 @@DATEFIRST 值如何,上述结果总是相同的。
【问题讨论】:
-
那么如果我提交 2013-08-28 和 2,我应该返回什么?
-
35。如果您提交 2013-08-28 和 3,您应该返回 36。
-
2013-01-01 和 1 怎么样?另外,1 代表星期日还是星期一?
-
1.您可以根据脚本检查结果:SET DATEFIRST 1;选择日期部分(周,'2013-01-01');
-
1 代表星期一。周日是 7 点。DATEFIRST 文档:technet.microsoft.com/en-us/library/ms181598.aspx
标签: sql sql-server datepart