Oracle Date和equals之间的查询

时间:2014-12-10 20:18:41

标签: sql oracle date

我正在尝试执行以下查询,

select symbol,effdate,anrev,morev 
from perf_intra 
where effdate 
  between TO_DATE('01/11/2014','dd/mm/yyyy') 
      and TO_DATE('05/12/2015','dd/mm/yyyy') 
  and TO_CHAR(effdate,'dd/mm') = '31/03';

我有满足这两个条件的记录。但是查询什么也没有返回,但是当我单独尝试这些条件时它会起作用。

任何人都可以帮我找到我的查询问题。


修改

让我以更清晰的方式提出我的问题, 让我们考虑一下,

查询

select symbol,effdate,anrev,morev
from perf_intra
where effdate between TO_DATE('25/11/2013','dd/mm/yyyy') and TO_DATE('05/12/2014','dd/mm/yyyy')

示例数据

BMA 25-NOV-13 12.00.00.000000000 AM 12.3977 11.2296
BMA 26-NOV-13 12.00.00.000000000 AM 12.4174 11.2468
BMA 27-NOV-13 12.00.00.000000000 AM 12.3991 11.2307
BMA 29-NOV-13 12.00.00.000000000 AM 12.3975 11.2294
BMA 02-DEC-13 12.00.00.000000000 AM 12.3631 11.1991

表格说明

 Name    Null Type              
---------------------
SYMBOL       VARCHAR2(20 CHAR) 
EFFDATE      TIMESTAMP(6)      
ANREV        VARCHAR2(20 CHAR) 
MOREV        VARCHAR2(20 CHAR) 
REVAL        VARCHAR2(20 CHAR) 

我想要的所有记录的确定(3月31日)和2013年11月25日(2014年12月25日)之间

各位,

以下解决方案有效,

select symbol,effdate,anrev,morev 
from perf_intra 
where effdate between 
      TO_DATE('25/11/2013','dd/mm/yyyy') and 
      TO_DATE('05/12/2014','dd/mm/yyyy')  
  and EXTRACT(month FROM effdate)=3 
  and EXTRACT(day FROM effdate)=31

谢谢大家

1 个答案:

答案 0 :(得分:1)

以下是以更易于遵循的日期格式编写的where

where effdate between date '2014-11-01' and date '2015-12-05' and
      TO_CHAR(effdate, 'mm-dd') = '03-31';

满足这两个条件的唯一日期是'2015-03-31',所以你不妨写一下:

where effdate = date '2015-03-31'

或者也许:

where trunc(effdate) = date '2015-03-31'

我的猜测是你没有effdate为'2015-03-31'的行。