2013-03-15 56 views
1

首先...对不起我的英语。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”语句的形式......任何人都知道另一种快速且具有相同功能的方式来检索数据?

+0

为什么不是简单的'日期在'之间? – Mat 2013-03-15 15:46:01

+0

因为客户只想选择一个日期u.u – K1988 2013-03-15 15:50:08

+0

这可能是一个灰色地带,但我认为需要调整的工作代码更适合代码评论网站。 – bernie 2013-03-15 15:52:52

回答

2

这听起来像你想

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

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

+1

如果数据没有时间分量存储,这也会返回额外的一天。 – 2013-03-15 16:00:12

+0

是的,这是我想要做的!非常感谢,Justin Cave n__n – K1988 2013-03-15 16:09:04

相关问题