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 (....)