Redshift中的Isdate函数

Posted

技术标签:

【中文标题】Redshift中的Isdate函数【英文标题】:Isdate function in Redshift 【发布时间】:2018-07-29 06:39:30 【问题描述】:

redshift 中是否有可用的 isdate 函数。我想将一个变量或列传递给函数,并找出该变量或列值是否为日期。如果有任何可用的 Udf,请更新相同。

【问题讨论】:

【参考方案1】:

好吧,如果列的类型是DATE,那么它就是一个日期(但也可以是null)。

因此,任何其他类型的列不是DATE

但是,您可以转换类型,例如采用VARCHAR 并尝试将其转换为日期(例如other_column::DATE)。如果它不起作用,我认为它会是null(但请测试它)。

更新:

您可以在COPY 命令中使用MAXERROR 告诉Redshift 即使出现错误也继续加载行。这些行将被跳过,但您可以查看 STL_LOAD_ERRORS - Amazon Redshift 以查看错误。

如果您不想跳过这些行,则需要将日期加载到 VARCHAR 字段中(这不会导致错误),稍后您需要将 VARCHAR 转换为 DATE .首选方法是将现有表复制到新表 (SELECT INTO...) 中,并进行列转换。 (在 Redshift 中执行 UDPATE 效率低下,因为它会导致行被删除并重新插入。)

【讨论】:

我检查了解决方案,发现如果值未成功转换为日期,则该过程失败并出现无法转换日期格式的红移错误。但我不想让这个过程失败我想将正确的日期格式与不正确的日期格式分开。 感谢您的更新。我已经在 varchar 字段中加载了数据,所以不应该有任何错误。但是在下一步中,当我尝试区分正确日期和垃圾日期时,我遇到了错误。所以我需要像 Oracle 或 sql server 函数这样的东西,它用二进制告诉我传递的变量是否是日期。

以上是关于Redshift中的Isdate函数的主要内容,如果未能解决你的问题,请参考以下文章

ISDATE 相当于 DB2

Oracle 到 Redshift 的 trunc 函数

在 Redshift 查询中为 max(date) 函数指定意外事件

sql psql的isdate函数

Redshift - 带条件的最大窗口函数

Oracle 到 Redshift 查询迁移