各位大侠,你们。我要更新oracle数据库中,其中一张表的指定一列的值,如何循环更新呢?单独的更新是没有问题,下面我把单独更新的SQL列出来:
update  uf_staffinformlogin  set logintime=replace(logintime,'11-6-1','2011-06-01')
                                ...
update  uf_staffinformlogin  set logintime=replace(logintime,'11-6-21','2011-06-21')
                                ...
update  uf_staffinformlogin  set logintime=replace(logintime,'11-6-27','2011-06-27')
  这个我现在不知道该如何写这个循环条件,麻烦各位了

解决方案 »

  1.   


    --不需要循环,这样就可以更新这张表的所有记录:update uf_staffinformlogin set logintime=to_char(to_date(logintime),'yyyy-mm-dd')
      

  2.   


    我使用你说的SQL语句了 ,但是不行呢 ,系统提示我 ora-01861:文字与格式字符串不匹配这是为什么呢??
      

  3.   


    --logintime里存日期是不是都是两位的年,就是都是 11-6-1 这样的格式吗?--如果是,你要改成四位的年格式,改成:update uf_staffinformlogin 
    set logintime=to_char(to_date('20'||logintime),'yyyy-mm-dd')--如果是2000年之前,你就得把'20'改为'19'
      

  4.   


    我使用你说的SQL语句了 ,但是不行呢 ,系统提示我 ora-01861:文字与格式字符串不匹配光标一直在“||”地方闪烁,不知道为什么??
    求解
      

  5.   

    -- 1楼的转换字符串到日期的函数需要加上格式
    UPDATE uf_staffinformlogin 
    set logintime= to_char(to_date(logintime,'YY-MM-DD'),'YYYY-MM-DD')
      

  6.   

    先确定表中logintime这个列是什么类型。如果是date,就没必要更新了。ALTER SESSION SET NLS_DATE_FORMAT='YYYY-MM-DD';select logintime from uf_staffinformlogin