SQL Netezza:使用不同日期格式的内部联接

SQL Netezza: Inner Joins with Different Date Formats

我正在使用 Netezza SQL。

我有以下两个表格:

我正在尝试 运行 以下 SQL 命令:

CREATE TABLE final_table AS SELECT * FROM table_1 a
INNER JOIN table_2 b
ON (( a.date_1 BETWEEN b.date_2 AND b.date_3) AND a.id = b.id)
 OR (a.id1 = b.id1)

问题:但这给了我以下错误:

HY000 Error: Bad External Date Representation

到目前为止我尝试了什么: 我正在尝试弄清楚如何使所有 DATE 变量兼容,以便 INNER JOIN 起作用。我认为也许这可以使用 ALTER TABLE 命令来完成:

#create new date variable
ALTER TABLE table_1
ADD COLUMN new_date DATE;

#set new date variable
UPDATE table_1;
set new_date = date_1;


#repeat inner join with new date variable
CREATE TABLE final_table AS SELECT * FROM table_1 a
INNER JOIN table_2 b
ON (( a.new_date BETWEEN b.date_2 AND b.date_3) AND a.id = b.id)
 OR (a.id1 = b.id1)

但同样的错误仍然存​​在。

有人可以告诉我如何解决这个问题吗?

此问题特定于您的 (varchar) table 中的数据。数据库正试图“隐式”从 VARCHAR 转换为 DATE。您应该尝试找出“错误”的值

对于这个特定问题的“快速修复”,您可以尝试显式转换另一种方式:从 DATE 到 VARCHAR:

CREATE TABLE final_table AS SELECT * FROM table_1 a 内连接 table_2 b ON (( a.date_1 BETWEEN VARCHAR(b.date_2,'YYYY-MM-DD') AND VARCHAR(b.date_3,'YYYY-MM-DD')) AND a.id = b.id) 或者 (a.id1 = b.id1)