如何在 SQL 中的having语句中加入时间

问题描述 投票:0回答:1

我正在使用此代码:

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 未被拾取。

如何更新日期函数以包含所有时间,或者只是忽略时间并仅根据日期进行拉取?

sql sql-server datetime snowflake-cloud-data-platform
1个回答
0
投票

如果您在 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
。 一旦您了解问题与具有非零时间分量的左侧操作数有关,我相信您可以自己解决它。

© www.soinside.com 2019 - 2024. All rights reserved.