我想从 Oracle 日期时间列中检索 26/03/2024 11:00:00 的数据。上午 +00:00 至 27/03/2024 03:00:00。 AM +00:00 使用 sysdate 作为 26/03/2024 的一日记录。
能否请我在 Oracle 中编写 SQL 查询以按日期和时间进行搜索?
我想获得当前日期上午 11 点到下一个日期凌晨 3 点的销售结果作为一条记录。
预期结果:
谢谢
使用一些日期数学。如果您从 TRANSACTION_DATE 中减去 3 小时 1 秒,您的数据就会适合同一天。
WITH -- S a m p l e D a t a :
tbl AS
( Select To_Date('26/03/2024 11:00:00', 'dd/mm/yyyy hh24:mi:ss') "TRANSACTION_DATE", 2 "QTY", 50 "AMOUNT" From Dual Union All
Select To_Date('27/03/2024 03:00:00', 'dd/mm/yyyy hh24:mi:ss') "TRANSACTION_DATE", 2 "QTY", 50 "AMOUNT" From Dual Union All
Select To_Date('27/03/2024 11:00:00', 'dd/mm/yyyy hh24:mi:ss') "TRANSACTION_DATE", 2 "QTY", 50 "AMOUNT" From Dual Union All
Select To_Date('28/03/2024 03:00:00', 'dd/mm/yyyy hh24:mi:ss') "TRANSACTION_DATE", 2 "QTY", 50 "AMOUNT" From Dual
)
-- S Q L :
Select TRUNC(TRANSACTION_DATE + NUMTODSINTERVAL( -3, 'Hour') + NUMTODSINTERVAL( -1, 'Second')) "A_DATE",
Sum(QTY) "QTY", Sum(AMOUNT) "AMOUNT"
From tbl
Group By TRUNC(TRANSACTION_DATE + NUMTODSINTERVAL( -3, 'Hour') + NUMTODSINTERVAL( -1, 'Second'))
Order By TRUNC(TRANSACTION_DATE + NUMTODSINTERVAL( -3, 'Hour') + NUMTODSINTERVAL( -1, 'Second'))