2016-08-03 678 views
-1

我有以下表只有4行: enter image description hereDB2時間戳比較

當我在這個表上運行查詢

select * from TABLE9 
    where dateLastChanged < dateLastUploaded 

,我希望看到的行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沒有得到。

我試圖鑄造timestamp--得到了相同的結果:

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

請告訴我失蹤???

我第一次在DB2上使用prj。越來越「愛」它。

注意:我知道我可以在Java方面解決這個問題。

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

編輯:

澄清了我認爲是明確的在問:

爲什麼

select * from TABLE9 
    where dateLastChanged < dateLastUploaded 

正在恢復dateLastChanged < dateLastUploadeddateLastChanged > dateLastUploadeddateLastChanged = dateLastUploaded

DB2如何決定哪個時間戳更大,更小,相等,不等於彼此。行tNumber=bbbbb的時間戳是同時創建和寫入的。

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

EDIT 2

我在原來的Q - 「大於/小於在時間戳的比較中,「比」更令人困惑。這(後面的時間戳是/否)​​ 很容易計算,一旦我通過了不一致性我在Q和編輯權利擺在這之前。

+0

小心解釋爲什麼您認爲'17:24'比'17:14'少(即早)? – mustaccio

+0

你有沒有看過你的時間戳?只要看得夠近,你就會找到你所有的答案。 Everythings像預期一樣工作! – MichaelTiefenbacher

+0

我也很喜歡DB2,因爲它是正確的。 –

回答

1

DB2使用ISO定義的邏輯來比較時間戳。這意味着對於「較低」,較早的日期/時間被採用,對於較晚的日期/時間「較大」。對於您的示例,DB2已正確評估所有內容。要獲得不同的結果,您需要更改值... :)