繁体   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