1

最初に...私の英語でごめんなさい。

私はこのようなクエリを持っています:

Select *
From tableA
Where (
          TO_NUMBER(TO_CHAR(dateA(+),'SYYYY'))  =  2013
          AND  TO_NUMBER(TO_CHAR(dateA(+),'MM'))  =  02
          AND  to_number(to_char(dateA(+),'dd'))  <=  25
          )

各日付からパラメータとして指定した最後の数値(この場合は25日目)までのデータを取得します。これは機能しますが、「Where」ステートメントの形式のために非常に遅延します...データを取得する別の方法を知っている人はいますか?高速で同じ機能ですか?

4

1 に答える 1

2

あなたが望むように聞こえます

SELECT *
  FROM tableA
 WHERE dateA BETWEEN trunc( date '2013-02-26', 'MM' ) AND date '2013-02-26'

dateAこれにより、月の最初から指定された日付までのすべての行が返されます。にインデックスがある場合dateA、Oracleはこの種のクエリにインデックスを使用できます(ただし、実際にインデックスが作成されるかどうかは別の問題です)。

于 2013-03-15T15:53:08.760 に答える