42 lines
1.2 KiB
SQL
42 lines
1.2 KiB
SQL
WITH date1 AS (
|
|
SELECT generate_series('2018-01-01'::timestamp, '2021-12-31'::timestamp, '1 day') AS ts
|
|
), date2 AS (
|
|
SELECT get_date_primary_key(ts) AS DATE_ID,
|
|
EXTRACT(YEAR FROM ts) AS N_YEAR,
|
|
EXTRACT(MONTH FROM ts) AS N_MONTH,
|
|
EXTRACT(WEEK FROM ts) AS N_WEEK,
|
|
EXTRACT(DAY FROM ts) AS DAY_MONTH,
|
|
EXTRACT(ISODOW FROM ts) AS DAY_WEEK
|
|
FROM date1
|
|
), date3 AS (
|
|
SELECT
|
|
*,
|
|
CASE
|
|
WHEN N_MONTH = 1 THEN 'January'
|
|
WHEN N_MONTH = 2 THEN 'February'
|
|
WHEN N_MONTH = 3 THEN 'March'
|
|
WHEN N_MONTH = 4 THEN 'April'
|
|
WHEN N_MONTH = 5 THEN 'May'
|
|
WHEN N_MONTH = 6 THEN 'June'
|
|
WHEN N_MONTH = 7 THEN 'July'
|
|
WHEN N_MONTH = 8 THEN 'August'
|
|
WHEN N_MONTH = 9 THEN 'September'
|
|
WHEN N_MONTH = 10 THEN 'October'
|
|
WHEN N_MONTH = 11 THEN 'November'
|
|
WHEN N_MONTH = 12 THEN 'December'
|
|
END AS MONTH_NAME,
|
|
CASE
|
|
WHEN DAY_WEEK = 1 THEN 'Monday'
|
|
WHEN DAY_WEEK = 2 THEN 'Tuesday'
|
|
WHEN DAY_WEEK = 3 THEN 'Wednesday'
|
|
WHEN DAY_WEEK = 4 THEN 'Thursday'
|
|
WHEN DAY_WEEK = 5 THEN 'Friday'
|
|
WHEN DAY_WEEK = 6 THEN 'Saturday'
|
|
WHEN DAY_WEEK = 7 THEN 'Sunday'
|
|
END AS DAY_NAME
|
|
FROM date2
|
|
)
|
|
|
|
INSERT INTO public."DIM_DATE"
|
|
SELECT DATE_ID,N_YEAR,N_MONTH,MONTH_NAME,N_WEEK,DAY_MONTH,DAY_NAME
|
|
FROM date3; |