导致"SQL Error [IX000]: Overflow occurred on a datetime or interval operation."的原因是什么,我该如何解决?



我想导出下面查询的数据。

SELECT id, number, dat1, dat2, (dat1 - dat2)::INTERVAL SECOND(9) TO SECOND::VARCHAR(10)::INTEGER AS dat1_dat2
FROM informix.table_ 
WHERE departement=='NY'
AND dat1 >='2021-03-01 00:00:00' 
AND dat1 <'2021-08-01 00:00:00'
AND ((dat1 - dat2)::INTERVAL SECOND(9) TO SECOND::VARCHAR(10)::INTEGER > -60 
AND (dat1 - dat2)::INTERVAL SECOND(9) TO SECOND::VARCHAR(10)::INTEGER<60) 
AND ((dat2 - dat1)::INTERVAL SECOND(9) TO SECOND::VARCHAR(10)::INTEGER > -60 
AND (dat2 - dat1)::INTERVAL SECOND(9) TO SECOND::VARCHAR(10)::INTEGER<60) 

我得到下面的错误。有谁知道为什么我不能导出我的数据吗?

任务执行失败

主题:SQL错误[IX000]:溢出发生在一个datetime或间隔操作。

我不是Informix用户,但是作为一名开发人员,我可以告诉您,当操作的结果太大而无法装入某个数据类型时,就会发生溢出错误。作为一种探索,(dat1 - dat2)::INTERVAL SECOND(9) TO SECOND::VARCHAR(10)::INTEGER操作的结果是否对于INTEGER来说太大了?快速的Google搜索似乎显示,Informix中INTEGER的最大值是2,147,483,647dat1dat2之间的秒数是否可能大于这个值(大于68年)?

所以我不能确切地告诉你你的查询是失败的,因为我看不到数据,但我可以告诉你,你的一个操作的结果是一个非常大的数字,不适合INTEGER,它是-2,147,483,647到2,147,483,647。

在您的查询中,以下任何一个都可能是罪魁祸首:

(dat1 - dat2)::INTERVAL SECOND(9) TO SECOND::VARCHAR(10)::INTEGER

(dat2 - dat1)::INTERVAL SECOND(9) TO SECOND::VARCHAR(10)::INTEGER

相关内容

  • 没有找到相关文章

最新更新