2016-08-03 19 views
-1

私は唯一の4行で、次の表を持っている: enter image description hereDB2のタイムスタンプ比較

私は、このテーブルにクエリ

select * from TABLE9 
    where dateLastChanged < dateLastUploaded 

を実行すると、私は、行1 & 4を見ることを期待、しかし、私私は

select * from TABLE9 
    where dateLastChanged > dateLastUploaded 
0を実行すると enter image description here

:これを取得

私は enter image description here

を取得し、

select * from TABLE9 
    where dateLastChanged <> dateLastUploaded 

に私はそれのすべての4を取得します。 ... where dateLastChanged = dateLastUploadedが取得できません。不足していただきました!

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

???:私はtimestamp--にキャストしようとした

は、同じ結果を得ました

初めてDB2上でprjを実行しました。ますます「愛する」。

注:私はJava側でこれを回避できることを知っています。

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

EDIT:

iは明らかだと思ったものを明確化Qで:

はどのように

select * from TABLE9 
    where dateLastChanged < dateLastUploaded 

dateLastChanged < dateLastUploadeddateLastChanged > dateLastUploadeddateLastChanged = dateLastUploadedを返してきます。

どのようにDB2が、より大きい、より小さい、等しい、互いに等しくないタイム・スタンプを決定しますか。行tNumber=bbbbbのタイムスタンプは同時に作成され、書き込まれました。

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

EDIT-2私の元Qで

- 「大なり/レスタイムスタンプの比較では "-than"が混乱します。これは(後者のタイムスタンプは大きい/そうではない) は、私がの矛盾を私に渡したら、これを直前に編集してしまうほど簡単です。

+0

'17:24 'が'17:14'より少ない(つまり早い)と考える理由を説明してください。 – mustaccio

+0

タイムスタンプを見たことがありますか?ちょうど十分に近く見て、あなたはあなたのすべての答えを見つけるでしょう。すべてのものが期待どおりに動作します! – MichaelTiefenbacher

+0

私はDB2が大好きですので、正しいです。 –

答えて

1

DB2は、ISO定義のロジックを使用してタイム・スタンプを比較します。これは、「より低い」の場合はより早い日付/時間が取られ、「大きい」の場合は後の日付/時間が取られることを意味する。あなたの例では、DB2はすべてを正しく評価しています。別の結果を得るには、値を変更する必要があります:

関連する問題