簡體   English   中英

SQL 查詢月份和年份

[英]SQL query for Month and Year

查找 Oracle SQL 查詢以顯示從當前年份 - 1y 和當前年份 + 1y 開始的月份和年份。 例如:2019 年 12 月、2020 年 1 月、2020 年 2 月、...... 2021 年 12 月

有多種方法可以做到這一點。 我認為像這樣的簡單示例是了解遞歸 CTE 的好機會:

with dates(yyyymm, n) as (
      select trunc(sysdate, 'Mon') as yyyymm, 1 as n
      from dual
      union all
      select add_months(yyyymm, -1), n + 1
      from dates
      where n <= 12
     )
select yyyymm
from dates;

您可以按如下方式使用層次結構查詢:

SQL> SELECT trunc(ADD_MONTHS(ADD_MONTHS(sysdate,-12), LEVEL-1), 'Mon') as  month_year
  2    FROM DUAL CONNECT BY LEVEL <= 24 + 1;

MONTH_YEAR
--------------
December  2019
January   2020
February  2020
March     2020
April     2020
May       2020
June      2020
July      2020
August    2020
September 2020
October   2020
November  2020
December  2020
January   2021
February  2021
March     2021
April     2021
May       2021
June      2021
July      2021
August    2021
September 2021
October   2021
November  2021
December  2021

25 rows selected.

SQL>
WITH d AS (
    SELECT
        'JAN' m,
        2021 y
    FROM
        dual
), d1 AS (
    SELECT
        to_date(m || y, 'MONYYYY') first_day,
        last_day(to_date(m || y, 'MONYYYY')) last_day1,
        last_day(to_date(m || y, 'MONYYYY')) - to_date(m || y, 'MONYYYY') no_of_days
    FROM
        d
)
SELECT
    level - 1 + first_day dates
FROM
    d1
CONNECT BY
    level <= no_of_days + 1;

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM