检查 Netezza 中的日期值

Posted

技术标签:

【中文标题】检查 Netezza 中的日期值【英文标题】:Check date value in Netezza 【发布时间】:2013-08-12 17:57:16 【问题描述】:

在 Netezza 中,我正在尝试检查日期值是否有效;类似于 SQL Server 中的 ISDATE 函数。

我收到了无效的日期,例如 2013 年 11 月 31 日,我如何在 Netezza 中检查该日期是否有效,以便将它们排除在我的流程之外。

谢谢

【问题讨论】:

【参考方案1】:

我不相信有内置的 Netezza 函数来检查日期是否有效。您可以编写一个 LUA 函数来执行此操作,或者您可以尝试加入“日期”查找表,如下所示:

创建一个包含两列的表:

DATE_VALUE date
DATE_STRING varchar(10)

将数据加载到此表中以获取有效日期(在您喜欢的工具、excel、unix 等中生成文件)。如果您只使用此检查,则每个 DATE_VALUE 甚至可以有不止一行(不同的“有效”格式)。如果您从 1900 到 2100 填写,只要您的数据在该范围内,就可以了。它也是一张小桌子,大约 200 年只有大约 7300 行。如果需要,添加更多。哎呀,由于 NZ 日期数据类型从 AD1 到 AD 9999,您可以只用 340 万行(对于 NZ 来说很小)来完全填充它。

然后,要隔离具有无效日期的行,只需在 DATE_STRING 上对该表使用 JOINEXISTS / NOT EXISTS。由于表非常小,netezza 可能会将其广播到所有 SPU,从而使性能影响微不足道。

【讨论】:

【参考方案2】:

Netezza Analytics Package 3.0(免费下载)带有几个验证日期值的 LUA 函数:isdate() 和 todate()。安装/编译非常简单。

【讨论】:

以上是关于检查 Netezza 中的日期值的主要内容,如果未能解决你的问题,请参考以下文章

如何更改 Netezza 中的日期格式?

如何在 Netezza 中将整数字段转换为日期?

如何优化 Netezza 中的表以补充日期条件的联接

Netezza SQL:用最近的数据填充缺失值

如何在 Netezza 中比较日期?

Netezza:如何将 varchar 转换为日期