【发布时间】:2015-08-11 11:26:20
【问题描述】:
我正在将一些 MS Access 查询转换为 T-SQL(用于 SQL 报告服务),但遇到了问题。
原来在 MS Access 查询中,有一个名为 DATEPART 的函数,它有两个可选参数(相应的 T-SQL DATEPART 函数没有的参数):firstdayofweek 和 firstweekofyear。而且我不知道如何在 T-SQL 中创建等效查询。
以下是原始的 MS Access 查询(精简为相关数据):
SELECT datepart("ww",OrderDate, 7, 2) AS WeekNumber FROM Orders;
注意:在这种情况下,7 表示以星期六为一周的第一天计算,2 表示以 4(或更多)天计算一年中的第一周。
如何在 T-SQL 中执行此操作?
【问题讨论】:
-
是的,这就是我开始的地方。不幸的是,该函数不采用这两个可选参数(firstdayofweek 和 firstweekofyear),结果是不同的。为了给你一个想法,我整理了一个快速示例(一个在 SQL 中的 access 中)以查看结果,如果我输入日期 2014 年 4 月 1 日,访问给我第 13 周,SQL 给我第 14 周。但是如果我插入日期 4/1/2013,两者都给我 14,所以它不像从 SQL 结果中减去一个那么简单。
-
这让我走到了一半——这确实涵盖了需要考虑周六和本周开始的部分。不幸的是,它无法将“第一”周视为有 4 天或更多天的那一周。
标签: sql tsql ms-access reporting-services datepart