2 curitismiss Curitismiss 于 2015.06.23 01:14 提问

oracle 语句:select的语句无法正常执行的问题

下面的语句无法正常执行

 select * from dev_work_time_table dwtt where dwtt.dates_type in (select initcap(to_char(to_date('2015-06-18 00:00:00','yyyy-mm-dd hh24:mi:ss'),'day','NLS_DATE_LANGUAGE = American')) from dual);

然而

 select initcap(to_char(to_date('2015-06-18 00:00:00','yyyy-mm-dd hh24:mi:ss'),'day','NLS_DATE_LANGUAGE = American')) from dual

是可以正常运行的。求大侠们指导。。。

3个回答

u012216727
u012216727   Ds   Rxr 2015.06.23 08:41

如何不正常;你下面一句将查询出的日期变了并不代表你括号外面的查询日期变了,因为你数据库里的日期格式没变,是不是这个原因导致你查询出了问题,
还有你数据库你的日期是什么格式的,是日期格式的还是字符串

danielinbiti
danielinbiti   Ds   Rxr 2015.06.23 09:09

先看看报的是什么错,在数据库客户端工具能不能执行。
如果不是客户端工具执行
最后

 dual);这个分号要去掉。
Curitismiss
Curitismiss   2015.06.23 10:53

谢谢大神们指点,问题已经找到,原因在于

 select initcap(to_char(to_date('2015-06-18 00:00:00','yyyy-mm-dd hh24:mi:ss'),'day','NLS_DATE_LANGUAGE = American')) from dual

查询出来的星期字符串是最后是有空格的,需要trim来做处理。

 select trim(initcap(to_char(to_date('2015-06-18 00:00:00','yyyy-mm-dd hh24:mi:ss'),'day','NLS_DATE_LANGUAGE = American'))) from dual

Csdn user default icon
上传中...
上传图片
插入图片