尝试运行查询来限制日期范围和时间范围

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

就像标题一样,我正在尝试运行查询来获取给定时间范围(上午 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 点的时间范围内处理。

sql db2
1个回答
0
投票

如果我正确理解你的问题,这个查询应该回答它。

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
© www.soinside.com 2019 - 2024. All rights reserved.