创建动态日期,这样我就不用手动输入明年的日期了

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

我有一个 SQL 查询,如下所示。我希望为

dynamic dates
current
加上
previous financial years
,这样当我将来运行代码时,我就不必手动更新注释部分。
感谢您对此的帮助。


    SELECT '2023/2024' AS FY_YEAR_SNAPSHOT, --I want to make 2023/2024 as dynamic
           1 AS COUNT
    FROM TABLE
    WHERE TO_DATE('2023-07-01', 'YYYY-MM-DD') 
        BETWEEN EFEC_STRT_DT AND EFEC_END_DT -- '2023-07-01' to be dynamic

    UNION ALL

    SELECT '2022/2023' AS FY_YEAR_SNAPSHOT, -2022/2023 to be dynamic
        1 AS COUNT
    FROM TABLE
    WHERE TO_DATE('2022-07-01', 'YYYY-MM-DD') 
        BETWEEN EFEC_STRT_DT AND EFEC_END_DT --2022-07-01 to be dynamic.
sql oracle date
1个回答
0
投票

不太清楚您的参考日期是什么(是 SYSDATE 还是其他日期)。这是根据参考日期生成日期的代码。

WITH
    tbl (ID, REFFERENCE_DATE) AS
        ( Select 1, DATE '2023-06-30' From Dual Union All 
          Select 1, DATE '2023-07-01' From Dual Union All 
          Select 1, DATE '2024-09-30' From Dual
        )
Select    ID,
          REFFERENCE_DATE, 
          Case  When EXTRACT(Month From REFFERENCE_DATE) <= 6
                Then To_Char(EXTRACT(Year From REFFERENCE_DATE) - 1) || '/' || To_Char(EXTRACT(Year From REFFERENCE_DATE))
          Else  To_Char(EXTRACT(Year From REFFERENCE_DATE)) || '/' || To_Char(EXTRACT(Year From REFFERENCE_DATE) + 1)
          End "FY_YEAR_SNAPSHOT",
          Case  When EXTRACT(Month From REFFERENCE_DATE) <= 6
                Then To_Date(To_Char(EXTRACT(Year From REFFERENCE_DATE) - 1) || '-07-01', 'yyyy-mm-dd')
          Else  To_Date(To_Char(EXTRACT(Year From REFFERENCE_DATE)) || '-07-01', 'yyyy-mm-dd')
          End  "FY_START"
From      tbl
/*   R e s u l t :
        ID REFFERENCE_DATE FY_YEAR_SNAPSHOT    FY_START
---------- --------------- ------------------- --------
         1 30.06.23        2022/2023           01.07.22
         1 01.07.23        2023/2024           01.07.23
         1 30.09.24        2024/2025           01.07.24
*/
© www.soinside.com 2019 - 2024. All rights reserved.