日期函数只接受int值在Apache 3.0火花

日期函数只接受int值在Apache 3.0火花;分数和字符串值返回AnalysisException错误。

写的亚当Pavlacka

去年发表在:2023年2月28日

问题

您正试图使用date_add ()date_sub ()函数在火花3.0中,但它们返回一个错误的SQL语句:AnalysisException错误消息。

在火花2.4和下面两个函数都会正常工作。

% sql select date_add (cast(“1964-05-23”日期),“12.34”)

导致

你正试图用分数或字符串值作为第二个参数。

在火花2.4和下面,如果第二个参数是一个分级或字符串值,它是强迫的int价值之前date_add ()date_sub ()是评估。

使用上面列出的示例代码,12.34是转化为价值12之前date_add ()是评估。

在火花3.0中,如果第二个参数是一个分级或字符串值,它会返回一个错误。

解决方案

使用int,短整型,或非常小的整数的第二个参数值date_add ()date_sub ()3.0函数的火花。

% sql select date_add (cast(“1964-05-23”日期),“12”)
% sql select date_add (cast(“1964-05-23”日期),12)

这两个例子在火花3.0中正常工作。

删除

信息

如果你从另一个来源进口数据,您应该创建一个常规清洁的价值观和确保数据以整数形式将它传递给一个日期之前的功能。


这篇文章有用吗?