【问题标题】:Check invalid date in Amazon Redshift检查 Amazon Redshift 中的无效日期
【发布时间】:2019-10-10 15:02:57
【问题描述】:
我正在处理 Amazon Redshift。
我有一个YYYYMMDD 格式的日期列。我需要编写一个查询来检查无效日期:
- 每个月都应该有适当的日子,例如:如果六月的日期部分为 31,则返回该列。
- 如果日期为非闰年的 2 月 29 日,则返回该列
【问题讨论】:
标签:
amazon-web-services
date
amazon-redshift
【解决方案1】:
没有“YYYYMMDD 格式的日期列”之类的东西——在红移日期列中,没有格式的 DATE、TIMESTAMP 或 TIMESTAMPTZ 数据类型;在内部,它是一个时间点的数字表示,您的查询工具或前端应用程序会根据显示它的所需文化/区域或基于用户表达的语言等对其进行格式化
你所拥有的是一个字符串或整数列,其中包含一些看起来像日期的数字,如果你知道前 4 位数字代表年份......等等
现在你在问如何确保这个“看起来可能代表日期的东西”是一个有效的日期?
在列上使用正确的 DATE/TIME/TIMESTAMPTZ 数据类型。你也可以用它做数学运算,不会有任何无效值,它也可以做基于时区的操作,无论什么文化,它都会正确排序,没有人会看到“20121211”并认为它是“1211 年 12 月 20 日”。或者可能是 2012 年 12 月 11 日。或者可能是 2012 年 11 月 12 日。或者......