簡體   English   中英

嘗試在 Redshift 中創建日期表

[英]trying to create a date table in Redshift

我正在嘗試在 redshift 中創建一個包含以下列的日期表:

  • 日期
  • 月份名稱
  • 年月
  • 月份名稱年份

請注意,年月的格式為:'202001',月份名稱年的格式為:january2020。 創建后如何在表中插入數據?

感謝幫助..

坦率地說,創建日歷表最簡單的方法是在 Excel 中制作!

為每個日期排成一行,使用公式為日、月、年、日數等添加列。您還可以添加布爾值來標識周末公共假期 您可以為一個月第一天和最后一天添加一列(例如,在給定日期之后查找一個月的最后一天)。

然后,將數據另存為 CSV 文件並將其導入到 Redshift 表中。

是的,您可以使用generate_series()函數編寫一些花哨的 SQL,該函數純粹在 Redshift 中制作表格,但在 Excel 中編寫和執行它可能有點痛苦,這讓您有機會添加其他功能(例如公共假期) .

這在 Redshift 中相當簡單。 可以使用遞歸 CTE 來制作日期列表,並且可以使用一些簡單的格式來獲取您想要的字段。 此示例生成從 2020 年 1 月 1 日到今天的所有日期。

with recursive dates(dt) as
( select '2020-01-01'::date as dt
  union all
  select dt + 1
  from dates d
  where d.dt <= current_date 
  )
 select dt, extract(year from dt) as year, extract(month from dt) as month,
    decode(month, 1, 'January', 2, 'February', 3, 'March', 4, 'April', 5, 'May', 6, 'June', 7, 'July', 8, 'August', 9, 'September', 10, 'October', 11, 'November', 12, 'December') as mname,
    year * 100 + month as yearmo, mname || year::text as monameyr
 from dates order by dt;

暫無
暫無

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

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