Mik*_*nes 3 sql-server date sql-server-2016 date-math
我有一个每日附加表,我需要一个公式来将表结果过滤到任何给定历史月份的最后一天。例如:
桌子:
DwDate Balance
20181231 $10
20190131 $80
20190228 $75
20190331 $50
Run Code Online (Sandbox Code Playgroud)
99% 的时间我只需要MAX(DwDate)
,这将是:
@MaxDate = (SELECT MAX(DwDate) FROM dbo.TABLE)
Run Code Online (Sandbox Code Playgroud)
但是,有时我需要一个可以让我回到 1 或 2 个月的公式:
@MaxDate - 2 Months
Run Code Online (Sandbox Code Playgroud)
要从日期减去一个月,您可以使用dateadd()
.
例如
SET @MaxDate = dateadd(month, -1, @MaxDate);
Run Code Online (Sandbox Code Playgroud)
将从您的@MaxDate
. 不过,那将保留一个月中的某一天。(除非该月不存在这一天,否则它是该月的最后一天,因此例如第 31 天可能成为第 30 天。)
可以使用日期所在的月份的最后一天的日期eomonth()
。
SET @MaxDate = eomonth(@MaxDate);
Run Code Online (Sandbox Code Playgroud)
将设置@MaxDate
为@MaxDate
之前所在月份的最后一天。
eomonth()
可选地采用第二个参数,它是要添加到月份的整数。所以要设置@MaxDate
为上个月的最后一天,@MaxDate
你可能会使用
SET @MaxDate = eomonth(@MaxDate, -1);
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
223 次 |
最近记录: |