DB2时间戳比较

时间:2016-08-03 22:03:55

标签: db2 db2-luw

我的下表只有4行: enter image description here

当我运行查询时

 select * from TABLE9 
     where dateLastChanged < dateLastUploaded
在这张桌子上,我希望看到第1行和第1行。 4,但我得到这个: enter image description here

当我跑步时

 select * from TABLE9 
     where dateLastChanged > dateLastUploaded
我明白了 enter image description here

,以及

 select * from TABLE9 
     where dateLastChanged <> dateLastUploaded

我得到了所有4个。 ... where dateLastChanged = dateLastUploaded没有。

我尝试投射到时间戳 - 得到了相同的结果:

 select * from TABLE9 
     where timestamp(dateLastChanged) < timestamp(dateLastUploaded)

什么不见了???

我第一次在prj上使用DB2。越来越多的爱#34;它。

注意:我知道我可以在Java端解决这个问题。

// --------------------------

编辑:

澄清我在Q中明确的想法:

怎么来

 select * from TABLE9 
     where dateLastChanged < dateLastUploaded

正在返回dateLastChanged < dateLastUploadeddateLastChanged > dateLastUploadeddateLastChanged = dateLastUploaded

DB2如何确定哪个时间戳更大,更小,相等,彼此不相等。行tNumber=bbbbb的时间戳是在同一时间创建和写入的。

// --------------------

修改-2

在我原来的Q - &#34;大于/小于&#34;在时间戳的比较中很困惑。这个(后一个时间戳更大/没有) 很容易想象一旦我通过我在Q和前面的编辑​​中列出的不一致

1 个答案:

答案 0 :(得分:1)

DB2使用ISO定义的逻辑来比较时间戳。这意味着对于“较低”,较早的日期/时间被采用,对于“较大”的较晚的日期/时间。对于您的示例,DB2已正确评估所有内容。要获得不同的结果,您需要更改值...:)