Oracle SQL: отметки времени в предложении where - PullRequest
46 голосов
/ 13 января 2012

Мне нужно искать строки в пределах определенного периода времени.

select * 
from TableA 
where startdate >= '12-01-2012 21:24:00' 
  and startdate <= '12-01-2012 21:25:33'

Т.е.: мне нужно искать строки с точностью до метки времени SECONDS.Как мне этого добиться?

К вашему сведению: столбец startdate имеет тип TIMESTAMP.

Ответы [ 2 ]

101 голосов
/ 13 января 2012

to_timestamp ()

Вам необходимо использовать to_timestamp() для преобразования вашей строки в правильное timestamp значение:

to_timestamp('12-01-2012 21:24:00', 'dd-mm-yyyy hh24:mi:ss')

to_date ()

ЕслиВаш столбец имеет тип DATE (который также поддерживает секунды), вам нужно использовать to_date()

to_date('12-01-2012 21:24:00', 'dd-mm-yyyy hh24:mi:ss')

Пример

Чтобы перевести это в условие where, используйте следующее:

select * 
from TableA 
where startdate >= to_timestamp('12-01-2012 21:24:00', 'dd-mm-yyyy hh24:mi:ss')
  and startdate <= to_timestamp('12-01-2012 21:25:33', 'dd-mm-yyyy hh24:mi:ss')

Примечание

Вам никогда не нужно использовать to_timestamp() для столбца типа timestamp.

4 голосов
/ 04 января 2019

Для всех, кто заходит в эту ветку с долями секунды в вашей отметке времени:

to_timestamp('2018-11-03 12:35:20.419000', 'YYYY-MM-DD HH24:MI:SS.FF')

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