さて、私はあなたを持っていると思います。次のことをしたいですか?
select <columns>
from my_table
where state_date <= <some date>
and state_time <= <some time>
ミリ秒を気にするのはかなり珍しいことですが、気にする場合は systimestamp
を使用する必要があります 。
日付と時刻を分割しているという事実から判断すると、これらは文字なので、フォーマットマスク
。それらが間違っている場合、リンクは何をすべきかについてあなたを案内するはずです。ちなみに、このように日付を分割するのは賢明ではありません。 タイムスタンプ
を使用して列を作成できます テーブルのデータ型。これにより、問題が非常に単純になります。
だから、なぜあなたが'Day'
を選んだのか分かりません クエリの形式ですが、その
to_char(sysdate、'DAY')
になります 。
以下のコメントから to_char(sysdate、'DD-MON-YY')
になります
<しばらく>コード>
to_char(systimestamp、'HH24:MI:SS:FF3')
になります 、これにより、タイムスタンプがミリ秒になりますが、データ型はマイクロ秒になる可能性があります。
私には少し奇妙に思えますが、クエリは次のようになります。
select <columns>
from my_table
where state_date <= to_char(sysdate, 'DD-MON-YY')
and state_time <= to_char(systimestamp,'HH24:MI:SS:FF3')
日付を文字列として保存する場合は、 yyyymmdd
の形式で保存するのがより一般的です。 少なくとも、それが正常であることを保証できます。このようなことをした場合は、フォーマットマスクを変更するだけです。そうしないと、これらのクエリは意図したとおりに機能しません。
個人的には、持っている この方法でデータを保存し、 state_date
を想定します たとえば、 dd-mon-yy
として保存されます 、つまり、年、月、日、 state_time
を含みます 上記のように保存されている場合は、次のようにします。
select <columns>
from my_table
where to_timestamp(state_date || state_time, 'DD-MON-YYHH24:MI:SS:FF3')
<= systimestamp
これにより、何が起こっているのかがより明確になり、<
に曖昧さがなくなります。 つまり、この状況では、日付は常に将来の日付よりも短くなりますが、これは必ずしも文字列に当てはまるとは限りません。
これが理にかなっていることを願っています。