在Oracle SQL中检索记录特定日期和时间

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

我想从 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 点的销售结果作为一条记录。

预期结果:

enter image description here

谢谢

Example

oracle plsql
1个回答
0
投票

使用一些日期数学。如果您从 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'))
© www.soinside.com 2019 - 2024. All rights reserved.