问题描述
Select DATEADD(DAY,-1,DATEADD(MONTH,DATEDIFF(MONTH,GETDATE()),0))
返回
2020-08-31 00:00:00.000
我如何修改它才能返回
2020-08-31 23:59:59.000
我尝试替换-1和0,但这没有帮助。
解决方法
为什么不从偏移量0中减去一秒钟呢?
select DateAdd(Second,-1,DateAdd(Day,DateAdd(Month,DateDiff(Month,SysDateTime()),0)))
返回:
YYYY-MM-DDT23:59:59Z
其中DD表示“月底”。
,如果要上个月的最后一秒,可以执行以下操作:
select dateadd(
day,datetimefromparts(
year(getdate()),month(getdate()),1,23,59,0
)
)
或者:
select dateadd(
second,cast(datefromparts(year(getdate()),1) as datetime)
)
我想知道为什么要产生这样的价值。如果这是关于生成包含在内的上限以进行过滤(例如使用between
运算符),那么使用排除上界会更简单,例如:
where date_col < '2020-08-31'
代替:
where date_col <= '2020-08-31 23:59:59.000'