oracle char 转datetime,oracle中通过to_char对日期进行转换时报错

问题描述

将HDRQ字段中的“第二学期”改成“XXXX-09-01”的格式,其中XXXX表示年份,由字段CREATE_TIME确定。

cd101885559dabfb4372bc315710c48e.png

问题出现的环境背景及自己尝试过哪些方法

oracle版本是11g,尝试直接用plsql进行编写,一直报错。很奇怪的是,将代码select to_char(CREATE_TIME,'yyyy') from OD_TPAS_RYCH_STD where ID = v_id;换成固定值(如2019)时,可以正常运行;同样单独运行上面一条语句,并将v_id换成表中的值(如11)时,也可以正常运行。放到一起就不行,求大神帮忙,非常感谢!

相关代码

代码一:declare --修改TPAS_RYCH表,HDRQ字段的“第二学期”

cursor hdrq_cursor is select ID,HDRQ,CREATE_TIME from OD_TPAS_RYCH_STD;

v_year varchar2(100);

v_id varchar2(100);

v_hdrq varchar2(100);

v_time DATE;

begin

open hdrq_cursor;

fetch hdrq_cursor into v_id,v_hdrq,v_time;

while hdrq_cursor%found loop

if v_hdrq = '第二学期' then

v_year := select to_char(CREATE_TIME,'yyyy') from OD_TPAS_RYCH_STD where ID = v_id;

update OD_TPAS_RYCH_STD set HDRQ = v_year || '-09-01' where ID = v_id;

end if;

fetch hdrq_cursor into v_id,v_hdrq,v_time;

end loop;

close hdrq_cursor;

end;

代码二:(最开始的思路,感觉不太对,而且也一直报错)update OD_TPAS_RYCH_STD set HDRQ = select substr(CREATE_TIME,0,4) || '-09-01'

where HDRQ = '第二学期'; --修改TPAS_RYCH表,HDRQ字段的“第二学期”

你期待的结果是什么?实际看到的错误信息又是什么?

正常情况应该将第一行数据的HDRQ字段改成“2019-09-01”,第三行改成“2020-09-01”

代码一提示错误:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值