Oracle(10g)はここで適切なTIME比較を行っていますか、または10進数に変換して比較する必要はありますか?例:Oracle Time Comparison
IF (SELECT TO_CHAR(sysdate,'HH24:MI:SS') from dual) <= '15:00'
THEN (...)
ありがとうございました。
Oracle(10g)はここで適切なTIME比較を行っていますか、または10進数に変換して比較する必要はありますか?例:Oracle Time Comparison
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を返すことで、より広い範囲のオプションを返すことができます:) – cagcowboy
IF (sysdate <= trunc(sysdate)+15/24)
THEN (...)
はトリックを行う必要があります...
これはちょうど2つの文字列を比較し、次のコード
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でもありません。 'SYSDATE <= TRUNC(SYSDATE)+(15/24)THEN ...' –
「時間は* 3pm前でなければならない」という場合は、「<= '15: 00:00 '" 「時間は* 3pm前でなければならない」という意味ならば、TO_CHAR(sysdate、 'HH24')<'15' " –