Сравнение меток времени DB2

У меня есть следующая таблица только с 4 строками: введите здесь описание изображения

Когда я запускаю запрос

 select * from TABLE9 
     where dateLastChanged < dateLastUploaded

в этой таблице я ожидаю увидеть строки 1 и 4, однако получаю следующее: введите здесь описание изображения

когда я бегу

 select * from TABLE9 
     where dateLastChanged > dateLastUploaded

я получаю введите здесь описание изображения

, и к

 select * from TABLE9 
     where dateLastChanged <> dateLastUploaded

я получаю все 4. ... where dateLastChanged = dateLastUploaded не получает ни одного.

Я попытался выполнить приведение к отметке времени - получил те же результаты:

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

Чего не хватает???

мой первый раз с DB2 на prj. все больше "любит" его.

Примечание. Я знаю, что могу обойти это на стороне Java.

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

ИЗМЕНИТЬ:

разъяснение того, что я думал, было ясно в вопросе:

Почему

 select * from TABLE9 
     where dateLastChanged < dateLastUploaded

возвращает dateLastChanged < dateLastUploaded, dateLastChanged > dateLastUploaded и dateLastChanged = dateLastUploaded.

Как DB2 решает, какая метка времени больше, меньше, равна или не равна друг другу. временные метки для строки tNumber=bbbbb были созданы и записаны одновременно.

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

EDIT-2

В моем исходном вопросе - "больше/меньше" при сравнении временных меток запутано. Это (последняя отметка времени больше/нет) достаточно легко понять, как только я устраню несоответствие, которое я изложил в вопросе и редактировании прямо перед этим.


person user6401178    schedule 03.08.2016    source источник
comment
Потрудитесь объяснить, почему вы думаете, что «17:24» меньше (то есть раньше), чем «17:14»?   -  person mustaccio    schedule 04.08.2016
comment
Вы когда-нибудь смотрели на свои временные метки? Просто посмотрите достаточно внимательно, и вы найдете все ответы. Все работает, как и ожидалось!   -  person MichaelTiefenbacher    schedule 04.08.2016
comment
Я также ЛЮБЛЮ DB2, потому что это правильно.   -  person data_henrik    schedule 04.08.2016
comment
@MichaelTiefenbacher надеюсь, что нет. Все работает так, как ожидалось! Прочитайте редактирование.   -  person user6401178    schedule 04.08.2016
comment
Хорошо еще раз - давайте посмотрим на ваш первый пример. Вы говорите, что ожидаете, что будет возвращена строка 1, то есть TNUMBER=400124. Глядя на ваши временные метки для этой строки, обе имеют одинаковую дату, поэтому вам нужно посмотреть на время и 17:24 › 17:14. Так что это причина, почему он НЕ возвращается. Ваше ожидание ошибочно.   -  person MichaelTiefenbacher    schedule 04.08.2016
comment
@MichaelTiefenbacher хорошо - как тогда вы объясните, что tNumber=ccccc появляется в запросе там, а tNumber=400124 нет. (пере)прочитайте правку(я). внимательно.   -  person user6401178    schedule 04.08.2016
comment
Извините, ваше редактирование сбивает с толку в моих глазах. Если вы обратитесь к своему первому примеру и tNumber=ccccc, 2016-08-13 больше, чем 2016-08-03 - достаточно просто посмотреть на дату.   -  person MichaelTiefenbacher    schedule 04.08.2016
comment
@MichaelTiefenbacher Думаю, мне следует немного поверить в DB2. были предвзяты по отношению к тем более ранним вещам и обвиняли в этом что угодно. Спасибо за разъяснение.   -  person user6401178    schedule 05.08.2016
comment
@ user6401178 да, доверяйте DB2 и доверяйте ответам, которые вы получаете здесь :-) и не забывайте отмечать ответы и голосовать за хорошие комментарии.   -  person MichaelTiefenbacher    schedule 05.08.2016
comment
@MichaelTiefenbacher DB2 все же не следует дискредитировать. тот, что на stackoverflow.com/questions/38729620 / стоит на месте. Я взялся за Data Studio именно из-за этого. столкнулся с этой странной проблемой терминатора запроса и терминатора состояния DS. потратил время, пока не понял, что редактор — это не только редактор, но и первая фаза выполнения запроса. все это славно. сохраняя веру однако.   -  person user6401178    schedule 15.08.2016


Ответы (1)


DB2 использует логику, определенную в ISO, для сравнения меток времени. Это означает, что для «меньшего» берется более ранняя дата/время, для «большего» — более поздняя дата/время. В вашем примере DB2 все правильно оценила. Чтобы получить разные результаты, вам нужно изменить значения... :)

person data_henrik    schedule 04.08.2016