下面的语句无法正常执行
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
是可以正常运行的。求大侠们指导。。。
如何不正常;你下面一句将查询出的日期变了并不代表你括号外面的查询日期变了,因为你数据库里的日期格式没变,是不是这个原因导致你查询出了问题,
还有你数据库你的日期是什么格式的,是日期格式的还是字符串
先看看报的是什么错,在数据库客户端工具能不能执行。
如果不是客户端工具执行
最后
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
查询出来的星期字符串是最后是有空格的,需要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