Oracle(10g)在这里进行了适当的TIME比较,还是需要转换为十进制时间然后进行比较?如,
IF (SELECT TO_CHAR(sysdate,'HH24:MI:SS') from dual) <= '15:00'
THEN (...)
感谢。
答案 0 :(得分:10)
IF (sysdate <= trunc(sysdate)+15/24)
THEN (...)
应该做的伎俩...
答案 1 :(得分:4)
您无法在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刚刚发布的日期比较通常最好!
答案 2 :(得分:1)
使用以下代码
SELECT TO_CHAR(SYSDATE, 'HH24MI') INTO V_SYS_TIME FROM DUAL; IF V_SYS_TIME BETWEEN V1_TIME AND V2_TIME THEN (....)