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 回答