1

過去24時間のレコードを取得するには?

Select * from TABLE1 where SENTDATE >= SYSDATE - 1 

上記のクエリを 00:05 に実行したところ、過去 5 分間のレコードが返されました。クエリが実行されてから正確に 24 時間以内にレコードを取得する必要があります。

SQL/Oracle でこれを実現する方法

Select * from TABLE1 where SENTDATE >= sysdate - 24 hrs ?
4

4 に答える 4

2

5 分過ぎた時点で実行すると、"yesterday" を探していることがわかります。これは次のようになります。

sentdate >= trunc(sysdate)-1 and
sentdate <  trunc(sysdate)

過去 24 時間の正確な値が必要な場合は、次のようにします。

sentdate >= sysdate-1 and
sentdate <  sysdate

また:

sentdate >  sysdate-1 and
sentdate <= sysdate

境界条件には十分注意してください。したがって、上記で >= と <、または > と <= を使用してください。

于 2013-05-21T07:47:09.813 に答える
0

試す

SELECT *
  FROM table1
 WHERE sentdate BETWEEN SYSDATE - 1 AND SYSDATE
于 2013-05-21T07:38:07.200 に答える
0

通常、sysdate - 1 はタイムスタンプ付きの日付も提供しますが、問題に直面している場合は、以下の条件を適用できます -

SELECT *
  FROM Table1
 WHERE Sentdate >= To_Date(To_Char((SYSDATE - 1), 'YYYYMMDD') || ' ' ||
                           To_Char(SYSDATE, 'HH24:MI:SS'),
                           'YYYYMMDD HH24:MI:SS')
于 2013-05-21T07:40:09.037 に答える
-1

DateDIFF() のような関数を使用してみてください:

    Select * from TABLE1 where DateDIFF(MINUTES, SENTDATE, SYSDATE) < 1440
于 2013-05-21T07:44:21.750 に答える