如何将SQL Server中结束日期的时间设为23:59:59而非00:00:00
解决SQL结束日期时间设为23:59:59的问题
直接修改@EndDate的赋值语句即可,通过先获取次日的起始时间,再减去1秒来得到当日的23:59:59:
declare @Date datetime declare @StartDate datetime declare @EndDate DateTime set @date = GetDate() Set @StartDate = DATEADD(M, DATEDIFF(M,0,@date),0) -- 修改这里:先取次日0点,再减1秒得到当日23:59:59 set @EndDate = DATEADD(SECOND, -1, DATEADD(DD, DATEDIFF(DD, 0, @date) + 1, 0)) select @StartDate,@EndDate
补充说明
DATEDIFF(DD, 0, @date) + 1计算从0基准日期到@date的天数再加1,得到次日的天数偏移量DATEADD(DD, ..., 0)将天数偏移量转换为次日的00:00:00时间点- 最后用
DATEADD(SECOND, -1, ...)减去1秒,得到当日的23:59:59
如果要适配datetime类型的3毫秒精度(避免漏掉接近23:59:59.997的记录),可以用更严谨的写法:
set @EndDate = DATEADD(MILLISECOND, -3, DATEADD(DD, DATEDIFF(DD, 0, @date) + 1, 0))
内容的提问来源于stack exchange,提问作者Pierre Barnard
相关产品推荐
相关产品推荐

