Oracle Time Сравнения

Оракул (10g) выполняет здесь надлежащее сравнение ВРЕМЕНИ, или мне нужно преобразовать в десятичное время, а затем сравнить? Например,

IF (SELECT TO_CHAR(sysdate,'HH24:MI:SS') from dual) <= '15:00'
THEN (...)

Благодарю.

3 ответа

IF (sysdate <= trunc(sysdate)+15/24)
THEN (...)

должен сделать трюк...

Вы не можете сделать select в if заявление, но вы можете сделать прямое сравнение с sysdate. Если вы делаете это так, вероятно, было бы лучше использовать число, а не полагаться на неявное преобразование. Вам также не нужны лишние минуты и т. Д.

begin

   if to_number(to_char(sysdate,'HH24')) <= 15 then
      -- do something
   end if;

end;

Если вы хотите использовать минуты, то, преобразовав их в строку без двоеточия, вы можете сделать более прямое сравнение. До тех пор, пока дата / время конвертируются в 24-часовой формат без дополнительных данных и наоборот, сравнение года, месяца, дня, часа и т. Д. Всегда будет точным, например

begin

   if to_char(sysdate,'HH24MI') <= '1515' then
      -- do something
   end if;

end;

Тем не менее, часто лучше проводить сравнения дат, так как @cagcowboy только что опубликовал, прежде чем я туда попал!

Используйте следующий код

ВЫБЕРИТЕ TO_CHAR(SYSDATE, 'HH24MI') INTO V_SYS_TIME FRU DUAL;

ЕСЛИ V_SYS_TIME МЕЖДУ V1_TIME И V2_TIME THEN 
(....)
Другие вопросы по тегам