2017-12-01 10 views
0

私は、(JDBCを使用して)ユーザ入力が与えられたときに、その年のすべての注文を返すプログラムを書いています。私は、 'OrderPlaced'として日付を 'dd-MMM-YY'の形式で私の受注テーブルに保存しています。しかし、私はちょうどエントリの年に基づいて情報を取得するために行く方法をちょっと困惑しています。それはLIKEステートメントの使用であろうか?またはOracleで日付をフィルタリングできる組み込みの方法がありますか?
ありがとうございます。Oracle SQLのyear in dateフィールドに基づいて結果をフィルタリングする方法は?

答えて

1

LIKEに日付を使用しないでください。

where to_char(order_placed, 'YYYY') = :year 

where extract(year from order_placed) = :year 

where order_placed >= to_date(:year || '0101', 'YYYYMMDD') and 
     order_placed < to_date(:year + 1 || '0101', 'YYYYMMDD') 

第三は、year_of_entry上で使用可能なインデックスを使用する可能性が最も高いという利点があります。ここでは3つの選択肢があります。

+0

ありがとうございます!あなたが私に与えたものをどのように使うのか分かりませんが。現時点では、私はしようとしています*注文からどこto_char(2017、 'YYYY')=:OrderPlaced;それは私に "OrderPlacedを宣言されていない変数をバインドする"と言っているし、OrderPlacedを年に置き換えると同じ –

関連する問題