我有一个要求,我必须找到上个月的期末余额 以月和年为基础。
我试过这段代码:
DECLARE @month NUMERIC = 11
DECLARE @Year NUMERIC = 2017
SELECT
DATEADD(DAY, -1, DATEADD(MONTH, @Month, DATEADD(YEAR, @Year - 1900, 0)))
但这会返回当月最后一天的值'2017-11-30 00:00:00.000'
。
而不是这个我想要上个月的最后一天:'2017-10-31 00:00:00.000'
答案 0 :(得分:1)
对于上个月的日期,您只需将-1
添加到变量@Month
:
SELECT Dateadd(day, -1, Dateadd(month, @Month-1,
Dateadd(year, @Year - 1900, 0)
))
结果:
2017-10-31 00:00:00.000
答案 1 :(得分:0)
或者你只需使用2个DATEADD()
就可以简化一下SELECT DATEADD(month, @Month - 1, DATEADD(year, @Year - 1900, -1))
或将@Year转换为月份,仅使用单个DATEADD()
SELECT DATEADD(month, (@Year - 1900) * 12 + @Month - 1, - 1)