我正在使用此代码:
having MIN(start_DATE::timestamp) between DATEADD('MONTH',-1,DATE_TRUNC('MONTH',GETDATE())) and DATEADD('DAY',-1, DATEADD('MONTH',+2,DATE_TRUNC('MONTH',GETDATE())))
我注意到它并没有在该范围内的所有时间都恢复。我正在提取日期 8/1-10/31,但由于与该日期相关的时间,它排除了记录。例如 2024-08-01 00:50:00.000 Z 和 2024-10-31 20:59:00.000 Z 未被拾取。
如何更新日期函数以包含所有时间,或者只是忽略时间并仅根据日期进行拉取?
如果您在 2024 年 9 月 25 日运行此查询,并且
MIN (start_Date
为“2024-10-31 20:59:00.000 Z”,则表达式将归结为:
having '2024-10-31 20:59:00.000' between '2024-08-01 00:00:00.000' and '2024-10-31 00:00:00.000'
2024-10-31 20:59:00.000 大于(晚于)您计算的终点;所以它不满足。
要解决这个问题,您可以删除 start_Date 的时间部分(您可以将其转换为日期,而不是时间戳);或将终点更改为“2024-10-31 23:59:59.999”。
还有其他方法,例如使用
< 2024-11-01
代替 BETWEEN
。
一旦您了解问题与具有非零时间分量的左侧操作数有关,我相信您可以自己解决它。