Oracle查询 - 无法弄清楚出了什么问题

时间:2012-11-28 20:21:22

标签: sql oracle

有人可以告诉我为什么以下查询在Oracle中被视为无效吗?

SELECT TO_CHAR(start_date,'dd/month')
FROM Table1
WHERE start_date IN (TO_DATE('JUN 15 12'), TO_DATE('AUG 19 12'));

是否因为'dd / month'在合并时被视为无效格式?

或是因为使用IN无法比较日期?

P.S>我此时无法访问Oracle数据库,这就是为什么我无法运行sql并获得确切错误的原因。我所知道的是声明无效,我想知道问题是什么。我是Oracle的新手

2 个答案:

答案 0 :(得分:4)

除非您更改了会话/数据库参数,否则TO_DATE格式应为dd-mon-yy格式。 TO_DATE的第二个参数是传入日期格式。

SELECT TO_CHAR(start_date,'DD/MONTH')
FROM Table1
WHERE start_date IN (TO_DATE('JUN 15 2012', 'MON DD YYYY'), TO_DATE('AUG 19 2012', 'MON DD YYYY'));

答案 1 :(得分:0)

尝试使用TO_DATE方法提供格式,如下所示:

 SELECT TO_CHAR(start_date,'DD/Month')
 FROM Table1
 WHERE start_date IN (
         to_date('JUN 15 2012', 'MON DD YYYY'), 
         to_date('AUG 19 2012', 'MON DD YYYY')
 );

此外,如果您想使用BETWEEN查找日期范围内的所有记录,请:

 SELECT TO_CHAR(start_date,'DD/Month')
 FROM Table1
 WHERE start_date BETWEEN to_date('JUN 15 2012', 'MON DD YYYY')
                      AND to_date('AUG 19 2012', 'MON DD YYYY');
相关问题