過去24時間のレコードを取得するには?
Select * from TABLE1 where SENTDATE >= SYSDATE - 1
上記のクエリを 00:05 に実行したところ、過去 5 分間のレコードが返されました。クエリが実行されてから正確に 24 時間以内にレコードを取得する必要があります。
SQL/Oracle でこれを実現する方法
Select * from TABLE1 where SENTDATE >= sysdate - 24 hrs ?
5 分過ぎた時点で実行すると、"yesterday" を探していることがわかります。これは次のようになります。
sentdate >= trunc(sysdate)-1 and
sentdate < trunc(sysdate)
過去 24 時間の正確な値が必要な場合は、次のようにします。
sentdate >= sysdate-1 and
sentdate < sysdate
また:
sentdate > sysdate-1 and
sentdate <= sysdate
境界条件には十分注意してください。したがって、上記で >= と <、または > と <= を使用してください。
試す
SELECT *
FROM table1
WHERE sentdate BETWEEN SYSDATE - 1 AND SYSDATE
通常、sysdate - 1 はタイムスタンプ付きの日付も提供しますが、問題に直面している場合は、以下の条件を適用できます -
SELECT *
FROM Table1
WHERE Sentdate >= To_Date(To_Char((SYSDATE - 1), 'YYYYMMDD') || ' ' ||
To_Char(SYSDATE, 'HH24:MI:SS'),
'YYYYMMDD HH24:MI:SS')
DateDIFF() のような関数を使用してみてください:
Select * from TABLE1 where DateDIFF(MINUTES, SENTDATE, SYSDATE) < 1440