检查 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 中的无效日期的主要内容,如果未能解决你的问题,请参考以下文章

Amazon Redshift 复制命令无效字符

如何更改 Amazon Redshift 中的默认时区?

Redshift 存储过程 - [Amazon](500310) 无效操作:“$1”处或附近的语法错误;

复制 json 文件时出现 Amazon Redshift 错误 - JSONPath 格式无效:成员不是对象

Redshift 中的无效数据错误

如何清除 Amazon Redshift 中的以下语法错误