oracle PL/SQL 问题
先选出符合条件的记录,再将表中的一列日期(本来是空)update为birthday+18*12个月。
下面一直报错说 文字与格式字符串不匹配,为何
declare
--游标
CURSOR test_cur IS
SELECT id ,birthday FROM tablename;
begin
for rec in test_cur loop
--更新
update tablename set engtheenbir = add_months(to_char(rec.birthday,'yyyymm'),18*12) where id = rec.id;
end loop;
--提交
commit;
end;
[解决办法]
update tablename set engtheenbir = to_char(add_months(rec.birthday,18*12),'yyyymm') where id = rec.id;
[解决办法]
add_months(to_char(rec.birthday,'yyyymm'),18*12)
add_months函数第一个参数变成了字符串,它需要的是日期参数
如果只是想取生日的月份,可以这样
update tablename set engtheenbir = add_months(to_date(to_char(rec.birthday,'yyyymm'),'yyyymm'),18*12) where id = rec.id;
如果只是简单加月份:
update tablename set engtheenbir = add_month(rec.birthday,18*12) where id = rec.id;
[解决办法]
add_months::=
功能
返回比日期d大n个月的日期,参数n可以是任意整数。如果d是该月份的最后一天,或者返回值月份的天数比日期d的天数少,则返回值是应返回月份的最后一天;否则返回值与d的日期中的天(day)是一致的。
update tablename set engtheenbir = add_months(to_date(to_char(rec.birthday,'yyyymm'),'yyyymm'),18*12) where id = rec.id;
如果只是简单加月份:
update tablename set engtheenbir = add_month(rec.birthday,18*12) where id = rec.id;