我不明白为什么这个查询对每年的2月份有效,而对31天的月份无效?除了二月份,我每个月都有30天的工作时间。有人能给我解释一下吗?
SELECT dateadd( mm, -240 + 22, DATEADD(mm, 1 + DATEDIFF(mm, 0, GETDATE()), -1)) AS n我使用上面的代码,因为我需要在22的位置输入一个数字来获得不同的日期。我使用它就像一个日历函数,每个月的最后一天。
发布于 2015-04-08 21:22:25
SELECT Current_Timestamp As today
, DateAdd(mm, DateDiff(mm, 0, Current_Timestamp), 0) As first_of_current_month
, DateAdd(mm, DateDiff(mm, 0, Current_Timestamp) + 1, 0) As first_of_next_month
, DateAdd(dd, -1, DateAdd(mm, DateDiff(mm, 0, Current_Timestamp) + 1, 0)) As last_of_current_month
;发布于 2015-04-08 22:16:18
我通常用下面的方法来做。
首先,获取当月的第一天:
SELECT CAST(DATEADD(DAY, 1 - DAY(GETDATE()), GETDATE()) AS DATE)然后,获取下个月的第一天,在之前获取的日期上加上一个月:
SELECT CAST(DATEADD(MONTH, 1, DATEADD(DAY, 1 - DAY(GETDATE()), GETDATE())) AS DATE)最后,获取当月的最后一天作为下个月第一天的前一天:
SELECT CAST(DATEADD(DAY, -1, DATEADD(MONTH, 1, DATEADD(DAY, 1 - DAY(GETDATE()), GETDATE()))) AS DATE)https://stackoverflow.com/questions/29515826
复制相似问题