10

トランザクションと日付列を格納する oracle テーブルがあります。2013 年の 1 年間のレコードを選択する必要がある場合、次のようにします。

select * 
  from sales_table
 where tran_date >= '01-JAN-2013'
   and tran_date <= '31-DEC-2013'

しかし、範囲を指定せずにその 1 年間のレコードから結果を取得するには、アプリケーションからパラメーター '2013' を渡すなど、1 年間のレコードを選択する簡単な方法が必要です。これは可能ですか?

4

5 に答える 5

8

to_date関数を使用できます

http://psoug.org/reference/date_func.html

select *
  from sales_table
 where tran_date >= to_date('1.1.' || 2013, 'DD.MM.YYYY') and 
       tran_date < to_date('1.1.' || (2013 + 1), 'DD.MM.YYYY')

明示的な比較を伴うソリューションは、フィールドでインデックス(tran_date >= ... and tran_date < ...)を使用できます。tran_date

境界について考えてください: たとえばtran_date = '31.12.2013 18:24:45.155'、コードtran_date <='31-DEC-2013'がそれを見逃す場合

于 2013-08-15T09:11:43.937 に答える