如何加入带有时间条件的 SQL (Teradata) 查询?

How to join a SQL (Teradata) query with time condition?

我正在尝试捕获包括今天在内的每一封电子邮件,直到第二天早上 10 点 30 分。我知道我要在我的加入中添加逻辑,但我不确定我做的是否正确。你能告诉我这是正确的还是有更好的方法来做到这一点?

我尝试添加到 JOIN 中的内容

LEFT JOIN events  b ON a.signup_dt BETWEEN b.mst_dt  AND  b.mst_dt +1 AND Extract(HOUR From  b.mst_dt+1) <= 9 
AND a.email_address = b.email_address

活动日期(我有电子邮件地址栏,但我没有在此处包括) enter image description here

Ops 日期 table(我有一个名为 signup_dttm 的日期时间列) enter image description here

澄清 - 在我的操作中 table 我有特定日期的所有电子邮件捕获。我们将为从 Ops table 捕获的每封电子邮件发送一封信息电子邮件。该数据(即我们在 Ops table 中发送的电子邮件以及日期和时间)存储在事件 table 中。例如,我们昨天(12/11/2019)捕获了 500 封电子邮件。然后我们昨天发送了 400 封信息电子邮件。剩下的 100 封电子邮件我们将在今天 (12/12/19) 上午 10 点 30 分之前发送。同样,那些发送的数据将存储在事件 table 中。这就是为什么我要尝试捕获从昨天到今天上午 9 点的所有内容并加入操作 table。希望这会有意义,如果没有请告诉我。非常感谢任何帮助。

非常感谢

您可以使用 INTERVAL 作为您的加入条件:

a.signup_dt BETWEEN 
  CAST(b.mst_dt AS TIMESTAMP(0)) AND -- Current day
  (CAST(b.mst_dt AS TIMESTAMP(0)) + INTERVAL '1 09' DAY TO HOUR) -- 9am next day