就像标题一样,我正在尝试运行查询来获取给定时间范围(上午 6 点 - 中午 12 点)和日期范围(7 月 1 日至 10 月 31 日)内的记录
提供更多背景信息: 交易每天都会运行,每天运行多次。日期和时间存储在一列中。将处理的时间以HH:MM:SS的格式存储在表中。我感兴趣的表中记录是 TRANSACTION_PROCESS_TIME [事务花费了多少秒]、PROCESS_DATE_TIME [事务发生的日期和时间]。
SELECT TRANSACTION_PROCESS_TIME, TIMESTAMP(PROCESS_DATE_TIME)
FROM TRANSACTION_TABLE
WHERE TIMESTAMP(PROCESS_DATE_TIME) BETWEEN TIMESTAMP('2023-07-01 00:06:00') AND TIMESTAMP('2023-07-01 00:12:00')
ORDER BY PROCESS_DATE_TIME
如果我像上面的示例一样在 7 月 1 日运行它,那么这将有效。它返回当天上午 6 点至中午 12 点窗口内的所有交易。但是,当我更改日期范围时,它完全打破了条件。
TLDR:尝试运行查询以返回从 7 月 1 日到 10 月 31 日运行的交易,这些交易在上午 6 点到中午 12 点的时间范围内处理。
如果我正确理解你的问题,这个查询应该回答它。
SELECT
TRANSACTION_PROCESS_TIME, TIMESTAMP(PROCESS_DATE_TIME)
FROM TRANSACTION_TABLE
WHERE
TIMESTAMP(PROCESS_DATE_TIME) BETWEEN TIMESTAMP('2023-07-01 06:00:00')
AND TIMESTAMP('2023-10-31 12:00:00')
AND TIME(PROCESS_DATE_TIME) BETWEEN TIME '06:00:00' and TIME '12:00:00'
ORDER BY PROCESS_DATE_TIME