3

Oracle (10g) はここで適切な TIME 比較を行っていますか、それとも 10 進数の時間に変換してから比較する必要がありますか? 例えば、

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

ありがとう。

4

3 に答える 3

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

トリックを行う必要があります...

于 2012-03-08T21:40:53.130 に答える
4

selectステートメント内でa を実行することはできませんが、ifsysdate と直接比較することはできます。このようにしている場合は、暗黙的な変換に頼るのではなく、数値を使用する方がおそらく良いでしょう。また、余分な分なども必要ありません。

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 が私が到着する前に投稿したばかりなので、日付を比較することをお勧めします。

于 2012-03-08T21:40:26.617 に答える