今天使用 SQL server DATEDIFF()函数,发现查询出的结果 总是不对,
原 where 查询条件为:
and datediff(dd,'2023-05-01',fdate) >= 0 and datediff(dd,fdate,'2023-05-31') <= 0
经过 排查 > DATEDIFF函数用于计算两个日期之间的时间差,其完整语法为DATEDIFF(datepart, startdate, enddate),返回结果为跨越指定时间单位的整数
也就是说 后面的日期 大于 前面的,计算结果就是正数,而如果后面的日期 小于 前面的日期 就是 负数
所以原条件实际 的条件 过滤 是一个意思,
and datediff(dd,'2023-05-01',fdate) >= 0
这个条件 查询 的结果是 日期 大于2023-05-01 这个时间
and datediff(dd,fdate,'2023-05-31') <= 0
这个条件查询 的 结果 是 日期大于 2023-05-31 这个时间
并且之后 就是 过滤 日期 大于 2023-05-31 这个时间 所以,结果一直没有正确
修改后的where条件,如下:
and datediff(dd,'2023-05-01',fdate) >= 0 and datediff(dd,'2023-05-31',fdate) <= 0
这样查询的结果就是 时间 大于 2023-05-01并且时间 小于 2023-05-31