繁体   English   中英

和之间的Oracle日期查询

[英]Oracle Date query between and equals

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

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) 

我想要所有日期为(Mar 31)且介于(25/11/2013)至(05/12/2014)之间的记录

伙计们,

以下解决方案有效,

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

谢谢你们

这是以更容易理解的日期格式编写的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'的行。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM