1

私の問題は、SELECT ステートメントを使用して、特定の列で上位 10 を並べ替えようとしていることです。多くのフォーラムを検索した後、何とかコンパイルできましたが、1 つのフィールドのタイムスタンプが先週のものであることを確認する必要があります。これを実行するようにしましたが、where 句の値を出力できないため、これが正しいかどうかはわかりません。

SELECT itemid, count(itemid) 
FROM Rateddate 
WHERE TO_CHAR(CURRENT_TIMESTAMP - DATE_RATED) < TO_CHAR(7)  
GROUP BY itemid;

TLDR:

TO_CHAR(CURRENT_TIMESTAMP - DATE_RATED) < TO_CHAR(7)

これにより、date_rated タイムスタンプが 1 週間未満であることを確認できますか?

4

2 に答える 2

4

と言ったほうが理にかなっているだろう

WHERE date_rated > sysdate - interval '7' day

過去 168 時間のデータが必要な場合。あなたが望むかもしれません

WHERE date_rated > trunc(sysdate) - interval '7' day

現在の時刻を気にするのではなく、7 日前の任意の時点のデータが必要な場合。

于 2012-05-11T18:16:37.453 に答える
0

これはうまくいきませんか:

  trunc(CURRENT_TIMESTAMP - DATE_RATED) < 7

DATE_RATEDこれは、それが日付フィールドであると想定しています。そうでない場合は、最初に で変換する必要がありますTO_DATE()

于 2012-05-11T18:17:09.207 に答える