Oracle - 月份查询的另一种方式?

时间:2013-03-15 15:40:49

标签: performance oracle

首先......对不起我的英语。

我有这样的查询:

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”语句的形式...任何人都知道另一种检索方式数据如此之快,具有相同的功能?

1 个答案:

答案 0 :(得分:2)

这听起来像你想要的

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

这将返回dateA在月初和指定日期之间的所有行。如果dateA上有索引,Oracle就可以将它用于这种查询(尽管它实际上是否是一个单独的问题)。