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
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!
其他相关推荐
Oracle 执行简单的语句,一直执行中,无法成功
搞了百度一下才知道,原来是表锁住了!查出哪些对象被锁:select a.,b. from v$locked_object a,dba_objects b where b.object_id = a.object_id 查出锁住对象的session ID 和serial#:select t2.username,t2.sid,t2.serial#,t2.logon_time from vlocke
动态sql中使用select into语句出错问题
Oracle 过程中执行动态 SQL 或 DDL 语句 2009-02-05 — Yanbin 如果你用的是 Oracle 8i 及以上的版本,那简单,在过程中用 execute immediate sql_str 就行, sql_str 是一个拼凑的 SQL 语句,但这个动态语句中带参数,或 Select 的结果要 into 到变量中时就要稍加留心一下了。而在 8i 以前的版
ORACLE:SELECT语句里调用函数使用DML语句进行UPDATE/INSERT/DELETE操作
需求:公司一系统升级,要维护的数据库表中已有数据,该表没有序列、触发器等。此表要直接插入一些数据,插入的数据为了和以前的数据兼容(就是一样)。该表主键的生成以前是在代码中分两步进行的,即查询、更新(现在要直接插入数据,不用服务端JAVA代码,不能用这个)。做法:本人很懒,希望一条SQL完成上面的插入并更新。而本人oracle数据库(应该说所有数据库)很菜,不会啊,于是找度娘,发现如下两篇资料对我有
Oracle select语句执行顺序
oracle select语句执行顺序及各部分功能详解
Oracle中select语句执行过程
熟悉oracle的执行过程对我们还是很有好处的……这里我就总结一下 通过from子句中找到需要查询的表 通过where子句进行非分组函数筛选判断 通过group by子句完成分组操作 通过having字句完成组函数筛选判断 通过select字句选择显示的列或表达式及组函数 通过order by字句进行排序操作
oracle执行select语句需要commit吗
问题:oracle执行select语句需要commit吗?           只要不是对数据库数据的更新修改操作,一般情况下不要commit。 但是在dblink的情况下,如果没有commit,有可能会造成ora-1000错误,open cursor too many.   --答案整理自网络
在Oracle中一次执行多条sql语句,结束符很重要
有时我们需要一次性执行多条sql语句,而用来更新的sql是根据实际情况用代码拼出来的 解决方案是把sql拼成下面这种形式: begin  update TB_VG set seq = 1, vessel_id = 'Jin14', vessel_type = 'TRACK' where batch_number = '20837' and train_id = '0233086'; u
oracle语句执行未提交,导致语句不能继续执行,kill进程
select object_name,machine,s.sid,s.serial# from v$locked_object l,dba_objects o ,v$session s where l.object_id = o.object_id and l.session_id=s.sid; alter system kill session '36,30789'; (其
PL_SQL中执行SELECT … INTO …语句时,如果返回结果集为空
当在PL_SQL中执行SELECT … INTO …语句时,如果返回结果集为空,则回触发NO_DATA_FOUND错误。但是当 SELECT 中有字段用到函数时,即使结果集为空,也不会触发NO_DATA_FOUND错误。 CREATE OR REPLACE PROCEDURE RD.EXCEPTION_TEST IS test    date; BEGIN         
oracle执行update语句卡住不动
问题开发的时候debug到一条update的sql语句时程序就不动了,然后我就在plsql上试了一下,发现plsql一直在显示正在执行,等了好久也不出结果。但是奇怪的是执行其他的select语句却是可以执行的。原因和解决方法这种只有update无法执行其他语句可以执行的其实是因为记录锁导致的,在oracle中,执行了update或者insert语句后,都会要求commit,如果不commit却强制关