Подтвердить что ты не робот

Oracle SQL: временные метки в разделе where

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

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

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

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

4b9b3361

Ответ 1

to_timestamp()

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

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

на свидание()

Если ваш столбец имеет тип 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.

Ответ 2

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

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