【发布时间】:2014-05-23 06:16:56
【问题描述】:
我在表中有一个日期列,它是 varchar2(10)。 我正在使用选择查询从表中获取一些数据。它继续像:
Select
.........................
from
.........
where
................
and (to_date(masc_date,'dd-mm-yyyy') between
to_date('10-05-2014','dd-mm-yyyy') and to_date('11-05-2014','dd-mm-yyyy'))
masc_date 是日期列,即 varchar2(10),该列中的日期值采用“dd-mm-yyyy”格式。 当我执行上述查询时,我得到 ORA-08143: not a valid month。
但是,当我将上述查询修改为:
Select
.........................
from
.........
where
................
and (to_date(masc_date,'dd-mm-yyyy') between
(select to_date('10-05-2014','dd-mm-yyyy') from dual) and
(select to_date('11-05-2014','dd-mm-yyyy') from dual))
查询工作正常。我无法找到此错误的原因,因为在我的第一个查询中,所有“to_date”中的日期值都是相同的格式和一个 char 值。
注意:我数据库中的nls语言是美国的,日期格式是“dd-mon-rr”
【问题讨论】:
-
我认为您选择的未公开部分以及其中不包含任何日期?
-
麻烦从这里开始“masc_date 是日期列,它是 varchar2(10)”。日期列应将日期作为其数据类型。现在剩下的就是数据清理了。 Rene 的剧本是一个好的开始。
标签: oracle