Generate a range of dates using SQL

前端 未结 15 1367
面向向阳花
面向向阳花 2020-11-28 05:47

I have a SQL query that takes a date parameter (if I were to throw it into a function) and I need to run it on every day of the last year.

How to generate a list of

15条回答
  •  醉话见心
    2020-11-28 06:16

    Date range between 12/31/1996 and 12/31/2020

    SELECT dt, to_char(dt, 'MM/DD/YYYY') as date_name, 
      EXTRACT(year from dt) as year, 
      EXTRACT(year from fiscal_dt) as fiscal_year,
      initcap(to_char(dt, 'MON')) as month,
      to_char(dt, 'YYYY')        || ' ' || initcap(to_char(dt, 'MON')) as year_month,
      to_char(fiscal_dt, 'YYYY') || ' ' || initcap(to_char(dt, 'MON')) as fiscal_year_month,
      EXTRACT(year from dt)*100        + EXTRACT(month from dt) as year_month_id,
      EXTRACT(year from fiscal_dt)*100 + EXTRACT(month from fiscal_dt) as fiscal_year_month_id,
      to_char(dt, 'YYYY')        || ' Q' || to_char(dt, 'Q') as quarter,
      to_char(fiscal_dt, 'YYYY') || ' Q' || to_char(fiscal_dt, 'Q') as fiscal_quarter
      --, EXTRACT(day from dt) as day_of_month, to_char(dt, 'YYYY-WW') as week_of_year, to_char(dt, 'D') as day_of_week
      FROM (
        SELECT dt, add_months(dt, 6) as fiscal_dt --starts July 1st
        FROM (
          SELECT TO_DATE('12/31/1996', 'mm/dd/yyyy') + ROWNUM as dt 
          FROM DUAL CONNECT BY ROWNUM < 366 * 30 --30 years
        )
        WHERE dt <= TO_DATE('12/31/2020', 'mm/dd/yyyy')
      )
    

提交回复
热议问题