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