2

フォローしたいのですが、日付をSYSDATEに置き換えますが、その間の時間は調整したいものです。構文はどうなりますか?

SYSDATE+'0001'との間の mydatefieldSYSDATE+'2359'

...
WHERE TO_CHAR( MOPACTIVITY.MOPNOTIFICATIONSENDAT , 'yyyy-mm-dd hh24:mi' )
  BETWEEN '2013-07-26 00:00:01' AND '2013-07-26 23:59:59'
;
4

3 に答える 3

7

Oracle の SYSDATE (またはその他の日付列) には時間コンポーネントがあります。したがって、それを取り除いてから、時間/分/時間条件を追加する必要があります。

例えば。今日の午前 10:00 から午後 3:00 と言うには、次のように言えます。

date_column between (trunc(sysdate) + 10/24) and (trunc(sysdate) + 15/24)

Oracle の日付演算は、日レベルで機能します。したがって、+1 は翌日、1/24 は 1 時間、10/24 は当日の午前 10:00 を示します。

SQL> alter session set nls_date_format = 'DD-Mon-YYYY HH:MI:SS AM';

Session altered.

  1  select sysdate,
  2         trunc(sysdate),
  3         trunc(sysdate) + 10/24,
  4         trunc(sysdate) + 15/24
  5* from dual
SQL> /

SYSDATE                  26-Jul-2013 06:26:07 PM
TRUNC(SYSDATE)           26-Jul-2013 12:00:00 AM 
TRUNC(SYSDATE)+10/24     26-Jul-2013 10:00:00 AM 
TRUNC(SYSDATE)+15/24     26-Jul-2013 03:00:00 PM 

ご質問の件ですが、当日と翌日の間が気になるようですので、時間の部分を取り除いた上で、日付に直接+1を足してみてください。

date_column >= trunc(sysdate) and 
date_column < trunc(sysdate)+1
于 2013-07-26T18:27:12.620 に答える