2016-08-03 12 views
-1

Ich habe die folgende Tabelle mit 4 Zeilen nur: enter image description hereDB2 Zeitstempel Vergleich

Wenn ich die Abfrage ausführen

select * from TABLE9 
    where dateLastChanged < dateLastUploaded 

auf diesem Tisch, ich erwarte ich die Zeilen 1 & 4 ist jedoch zu sehen, erhalten diese: enter image description here

Wenn ich

select * from TABLE9 
    where dateLastChanged > dateLastUploaded 
0 laufen

i bekommen enter image description here

und zu

select * from TABLE9 
    where dateLastChanged <> dateLastUploaded 

ich alle 4 davon. ... where dateLastChanged = dateLastUploaded erhält keine.

Ich versuchte timestamp-- Gießen die gleichen Ergebnisse erhielt:

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

Was fehlt ???

mein erstes Mal mit DB2 auf einem prj. zunehmend "liebend" es.

Hinweis: Ich bin mir bewusst, dass ich dies auf der Java-Seite umgehen kann.

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

EDIT:

klären, was ich dachte, war klar, in der F: Wie

kommen

select * from TABLE9 
    where dateLastChanged < dateLastUploaded 

kehrt dateLastChanged < dateLastUploaded, dateLastChanged > dateLastUploaded und dateLastChanged = dateLastUploaded.

Wie entscheidet DB2, welcher Zeitstempel größer, kleiner, gleich, nicht gleich ist. Die Zeitstempel für Zeile tNumber=bbbbb wurden erstellt und gleichzeitig geschrieben.

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

EDIT-2

In meinem ursprünglichen Q - „Größer-als/weniger "als im Vergleich der Zeitstempel ist verwirrt. Dies (der letzte Zeitstempel ist größer/nicht) ist einfach genug, um zu verstehen, sobald ich die Inkonsistenz I in der Q und die Bearbeitung direkt davor angeordnet übergeben.

+0

Sorgen Sie zu erklären, warum Sie denken, dass '17: 24 'weniger (also früher) als '17: 14' ist? – mustaccio

+0

Haben Sie sich jemals Ihre Zeitstempel angesehen? Schaue nur nah genug und du wirst alle deine Antworten finden. Alles funktioniert wie erwartet! – MichaelTiefenbacher

+0

Ich LIEBE auch DB2, weil es korrekt ist. –

Antwort

1

DB2 verwendet ISO-definierte Logik zum Vergleichen von Zeitstempeln. Es bedeutet, dass für "niedriger" das frühere Datum/Zeit genommen wird, für "größer" das spätere Datum/die spätere Zeit. Für Ihr Beispiel hat DB2 alles richtig ausgewertet. Um unterschiedliche Ergebnisse zu erhalten, müssen Sie die Werte ändern ... :)