Sql Netezza中的错误时间戳外部表示错误
我在Netezza中运行下面的查询,并被提到错误 查询:Sql Netezza中的错误时间戳外部表示错误,sql,netezza,Sql,Netezza,我在Netezza中运行下面的查询,并被提到错误 查询: SELECT * FROM WORKORDER SRC INNER JOIN APPOINTMENT TRG ON SRC.ACCESSID = TRG.SEEKER_ID AND (COALESCE(SRC.SLAEXPIRY, '') = COALESCE(TRG.SLA_EXPIRY_DATE_TS, '')) 错误: ERROR [HY000] ERROR: Bad timest
SELECT * FROM WORKORDER SRC
INNER JOIN APPOINTMENT TRG
ON SRC.ACCESSID = TRG.SEEKER_ID
AND (COALESCE(SRC.SLAEXPIRY, '') = COALESCE(TRG.SLA_EXPIRY_DATE_TS, ''))
错误:
ERROR [HY000] ERROR: Bad timestamp external representation ''
正如我看到的,slafirime
和SLA_expirime_DATE_TS
列的NULL
值有时会尝试以下选项,但没有运气
SELECT * FROM WORKORDER SRC
INNER JOIN APPOINTMENT TRG
ON SRC.ACCESSID = TRG.SEEKER_ID
AND case when COALESCE(SRC.SLAEXPIRY, '') is not null then COALESCE(SRC.SLAEXPIRY, '')
else NULL end = case when COALESCE(TRG.SLA_EXPIRY_DATE_TS, '') is not null then COALESCE(TRG.SLA_EXPIRY_DATE_TS, '')
else NULL end
这里的基本问题是不能将空字符串(即''')转换为时间戳
TESTDB.ADMIN(ADMIN)=> select coalesce(current_timestamp, '');
ERROR: Bad timestamp external representation ''
当然,第二个问题是空值不会加入。如果您仍然想加入null,那么下面的查询应该适合您。不要期望这种基于表达式的联接具有很好的性能
SELECT *
FROM WORKORDER SRC
INNER JOIN APPOINTMENT TRG
ON SRC.ACCESSID = TRG.SEEKER_ID
AND
(
(
SRC.SLAEXPIRY = TRG.SLA_EXPIRY_DATE_TS
)
OR
(
SRC.SLAEXPIRY IS NULL
AND TRG.SLA_EXPIRY_DATE_TS IS NULL
)
)
我相信有一个默认值是传递到时间戳列。尝试传递'00-00-00 00:00:00'@Abhis,而不是传递空间,不幸的是,在这一点上,我不得不接受现有数据。当前,此字段中有
NULL
值column@Abhis,我尝试了您的解决方案,然后得到了ERROR[HY000]ERROR:Bad timestamp external representation'00-00-00 00:00:00'
您还可以使用isnotfalse()
或istrue()
函数简化空对空的比较。