数据库中有张表A表A里面有个字段B 是char类型的字段如何把B字段加10天并把日期搞成YYYY-MM-DD格式请问SQL该怎么写

解决方案 »

  1.   

    update A set B = to_char(to_date(trim(B),'B原来的格式'),'yyyy-mm-dd')
      

  2.   

    update A set B = to_char(to_date(trim(B),'B原来的格式')+10,'yyyy-mm-dd') 
      

  3.   

    没用啊 我感觉我的oracle很不正常比如我输入select to_date(’2005-01-01','YYYY-MM-DD') from dual结果显示的是01-1月 -05这是怎么回事啊?
      

  4.   

    难道YYYY-MM-DD里面还能含中文的'月 '?
      

  5.   

    如果你是用的PL/SQL developer,那到你的菜单“Tool”--“Perferences”--“NLS Options”里看看日期格式是不是被设成了DD-MMM-yy这种格式了。
    如果你用SQLPLUS,那用 select * from nls_session_parameters; 看看是不是日期格式被设错了,如果不是YYYY-MM-DD就设回来就OK了
      

  6.   


    to_date返回的是日期类型,日期类型是你看不到的,你能看到的是工具对你的日期按照默认选项显示出的字符串。它显示成'01-1月 -05'也好,显示成'2005-01-01'也好,里面存的值都是2005年1月1日0点0分0秒对应的日期值
      

  7.   

    如果B字段是'2010-03-10'这种类型的,可以这样写,例如:
    select to_date('2010-03-10','yyyy-mm-dd')+10 from dual;
    如果B字段是'20100310'这种类型的,可以这样写,例如:
    select to_date('20100310'+10,'yyyy-mm-dd') from dual;
      

  8.   


    这很正常啊!默认日期就是这样格式的。
    若想显示成yyyy-mm-dd的格式,可以这样:
    例如:
    select to_char(sysdate,'yyyy-mm-dd') from dual;
      

  9.   

    select sysdate + interval '10' day from dual;
    y 表示年的最后一位 、
    yy 表示年的最后2位 、
    yyy 表示年的最后3位 、
    yyyy 用4位数表示年
    表示month的: 
    mm 用2位数字表示月 、
    mon 用简写形式, 比如11月或者nov 、
    month 用全称, 比如11月或者november
    表示day的:
    dd 表示当月第几天 、
    ddd 表示当年第几天 、
    dy 当周第几天,简写, 比如星期五或者fri 、
    day 当周第几天,全称, 比如星期五或者friday
    表示hour的:
    hh 2位数表示小时 12进制 、
    hh24 2位数表示小时 24小时
    表示minute的:
    mi 2位数表示分钟
    表示second的:
    ss 2位数表示秒 60进制
    表示季度的:
    q 一位数 表示季度 (1-4)另外还有ww 用来表示当年第几周 w用来表示当月第几周