오라클 (10g)은 여기에서 적절한 시간 비교를 수행합니까? 아니면 10 진수 시간으로 변환 한 다음 비교해야합니까? 예 :오라클 시간 비교
IF (SELECT TO_CHAR(sysdate,'HH24:MI:SS') from dual) <= '15:00'
THEN (...)
감사합니다.
오라클 (10g)은 여기에서 적절한 시간 비교를 수행합니까? 아니면 10 진수 시간으로 변환 한 다음 비교해야합니까? 예 :오라클 시간 비교
IF (SELECT TO_CHAR(sysdate,'HH24:MI:SS') from dual) <= '15:00'
THEN (...)
감사합니다.
if
문에서 select
을 수행 할 수는 없지만 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 그냥 올렸습니다으로 날짜 비교를 수행하는 것이 좋습니다! 트릭을 할해야
+1 넓은 범위의 옵션에 대해 +1 할 수 있습니다. – cagcowboy
IF (sysdate <= trunc(sysdate)+15/24)
THEN (...)
...
Ok :) [이미 내 코멘트를 제거했습니다] –
+1 내 대답의 마지막 부분이 무엇 처음으로 거기에있어! – Ben
5/8이 더 좋을 것입니다 (수학 전공) ;-) –
이 단지 두 개의 문자열을 비교하여 다음과 같은 코드를
SELECT TO_CHAR(SYSDATE, 'HH24MI') INTO V_SYS_TIME FROM DUAL; IF V_SYS_TIME BETWEEN V1_TIME AND V2_TIME THEN (....)
다음과 같습니다 : "IF TO_CHAR (SYSDATE, 'HH24MI') V1_TIME과 V2_TIME 사이에 있음"보다 느림 –
를 사용합니다. 심지어 실행합니까? 그것은 SQL이나 PL/SQL이 아닙니다. 'IF SYSDATE <= TRUNC (SYSDATE) + (15/24) THEN ...' –
"시간은 오후 3시 이전이어야합니다."라는 말은 "<= '15 : 00:00 ' ". "시간은 * 오후 3시 이전이어야합니다."라는 뜻인 경우 "TO_CHAR (sysdate, 'HH24') < '15'" –