TSQL - 本月的SQL Server数量

时间:2016-07-19 05:37:38

标签: sql sql-server database tsql

我使用下面的查询来获取一个月中的周数:

datepart(day, datediff(day, 0,TABLE.DATE), 102))/7 * 7)/7 + 1

现在我需要更改脚本,如果一个星期在下个月结束,它应该显示1而不是5

有人可以帮助我吗?

1 个答案:

答案 0 :(得分:1)

使用Modulo乘以4,您可以获得月份编号1而不是5

对于我在第5周进行测试的示例,其结果为1

DECLARE @TestDate AS DATETIME = '2016-07-29 10:00:00';
SELECT CASE ((DATEPART(DAY, DATEDIFF(DAY, 0, @TestDate)) /7 * 7) /7 + 1) % 4
       WHEN 0 THEN 4 
       ELSE ((DATEPART(DAY, DATEDIFF(DAY, 0, @TestDate)) /7 * 7) /7 + 1) % 4 END

在您的查询中,您错误地使用了DATEPART。实际上它只需要2个参数。