Oracle查询未正确显示日期

时间:2011-07-07 19:33:26

标签: sql oracle oracle9i

在Oracle中,列类型为= DATE的表中有一列(dateColumn),当我执行select * from table.时,特定记录的值显示为'10 / 03/2010' 现在,当我这样做时:

SELECT * 
  FROM table 
 WHERE dateColumn < '01-JAN-11'

什么都没有出现。当我这样做时:

SELECT * 
  FROM table 
 WHERE dateColumn > '01-JAN-11'

记录显示出来。 为什么这样做? “2010年10月10日”是第10届MArch 2010,所以很明显是&lt; 2011年1月1日。

2 个答案:

答案 0 :(得分:7)

没有明确的日期格式 - 它可能因地区甚至商业而异。即使没有考虑SQL,这也是现实......

在Oracle中,将字符串评估为日期的方法要求您使用TO_DATE function

SELECT * 
  FROM table 
 WHERE dateColumn > TO_DATE('01-JAN-11', 'DD-MON-YY')

您需要提供格式掩码以指示Oracle如何解释您提供它的日期。

该功能在其他数据库上通常不同,但其他方面的体验是相同的。大多数数据库接受'YYYY-MM-DD'用于将字符串隐式转换为日期。显式转换是指您使用函数(如TO_DATE)来显式更改数据类型。

答案 1 :(得分:1)

尝试使用to_date:

select * from table where dateColumn < to_date('01-JAN-11', 'dd-MON-YY')