Использование BETWEEN или <=,> = для отметок времени Oracle - PullRequest
8 голосов
/ 23 ноября 2010

В моей таблице Oracle есть столбец tmstp с типом данных TIMESTAMP(3) WITH TIME ZONE.

Когда я запускаю следующий запрос

SELECT COUNT(column1) 
  FROM table1 
 WHERE tmstp BETWEEN to_timestamp_tz('10-OCT-10 05.00.00.000000000 AM -05:00', 'DD-MON-RR HH.MI.SSXFF AM TZR')
                 AND to_timestamp_tz('11-OCT-10 04.59.59.999999999 AM -05:00', 'DD-MON-RR HH.MI.SSXFF AM TZR');

это примерно вдвое больше, чем следующий запрос:

SELECT COUNT(column1) 
  FROM table1 
 WHERE tmstp >= to_timestamp_tz('10-OCT-10 05.00.00.000000000 AM -05:00', 'DD-MON-RR HH.MI.SSXFF AM TZR') 
   AND tmstp <= to_timestamp_tz('11-OCT-10 04.59.59.999999999 AM  -05:00', 'DD-MON-RR HH.MI.SSXFF AM TZR');

Я думал, что они должны дать эквивалентные результаты. Любой вклад в то, что может происходить? Как мне отладить это?

1 Ответ

6 голосов
/ 23 ноября 2010

Извините за беспокойство.Я понял.Мой вопрос на самом деле тоже некорректен, потому что я отредактировал его, чтобы скрыть конфиденциальные данные.

В одном из запросов был дополнительный пробел между AM и смещением часового пояса, что привело к разным результатам.

Stupidme.

Так что, если преобразуемая строка метки времени немного пропущена пробелами, ответы могут быть отключены.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...