微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如何更改时间戳DATEADDDAY,-1,DATEADDMONTH,DATEDIFFMONTH,0,GETDATE,0返回23:59:59.000而不是00:00:00.000

如何解决如何更改时间戳DATEADDDAY,-1,DATEADDMONTH,DATEDIFFMONTH,0,GETDATE,0返回23:59:59.000而不是00:00:00.000

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'

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。