2012-05-11 39 views
1

私の問題は、SELECT文を使用して、特定の列でトップ10を注文しようとしています。私は多くのフォーラムを通して検索した後に何かをコンパイルすることができましたが、1つのフィールドのタイムスタンプが先週に入っていることを確認する必要があります。Oracle SQLのタイムスタンプを使用したSELECT

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) 

が、これは確認してない私は、where句の値を印刷することはできません、これは正しいかどうかはわからないが、実行するためにこれを得ていますdate_ratedタイムスタンプは1週間未満ですか?

答えて

4

あなたは最後の168時間からデータを望む場合は

WHERE date_rated > sysdate - interval '7' day 

を言うために、より理にかなって。あなたはそれが現在の日の何時で気にするのではなく7日前の日に任意のポイントからのデータが必要な場合は、

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

をしたいことがあります。

0

はあなたのために、この作品ではないでしょう:

trunc(CURRENT_TIMESTAMP - DATE_RATED) < 7 

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

+0

これはORA-00932:データ型が矛盾していることを予期しています。予想されるNUMBERは二番目に – arturro

+0

です。これがタイムスタンプの場合、日付にキャストする必要があります。あなたのテーブル定義は何ですか? – BrianM

関連する問題