日期:2014-05-17  浏览次数:20974 次

一个oracle 修改语句 一直报错 ORA-00927 大家帮忙看下
SQL code

update tableType 
set to_date(holiday_end,'yyyy-MM-dd') = to_date(to_char('2011-12-21','yyyy-MM-dd'),'yyyy-MM-dd')
where worker_id='10589'  
and HOLIDAY_TYPE='旷 工'  
and holiday_state='0' 



大家帮忙看下 该怎么修改 sql,谢谢

------解决方案--------------------
SQL code

update tableType 
set holiday_end = to_date('2011-12-21','yyyy-MM-dd')
where worker_id='10589'  
and HOLIDAY_TYPE='旷 工'  
and holiday_state='0'

------解决方案--------------------
holiday_end 是什么类型 如果是yyyy-MM-dd时间类型 在通过to_date函数就会报错了
SQL code

--如果是date类型
update tableType 
set holiday_end = to_date('2011-12-21','yyyy-MM-dd')
where worker_id='10589'  
and HOLIDAY_TYPE='旷 工'  
and holiday_state='0' 


--如果是字符串类型
update tableType 
set to_date(holiday_end,'yyyy-MM-dd') = to_date('2011-12-21','yyyy-MM-dd')
where worker_id='10589'  
and HOLIDAY_TYPE='旷 工'  
and holiday_state='0'

------解决方案--------------------
holiday_end 的类型是?
------解决方案--------------------
报的什么错?
------解决方案--------------------
LZ这么写的话 应该是to_char('2011-12-21','yyyy-MM-dd')这个报错了 to_char函数不能将非时间类型字符串转换成yyyy-MM-dd格式 会报错'无效数字'
------解决方案--------------------
SQL code

--如果是varchar2,这样写吧,不过应该是date吧,用varchar2很奇怪
update tableType 
set holiday_end,'yyyy-MM-dd' = '2011-12-21'
where worker_id='10589'  
and HOLIDAY_TYPE='旷 工'  
and holiday_state='0'