如题,我从mysql向oracle里导入了一个表,表里面有个birthday的列,在原来在mysql里面此列是date类型的,可是向oracle导入时老是报错,但是把date变成varchar就导进去了,我现在把birthday以varchar字符类型导入了oracle里面所以
现在需要把oracle里面的varchar变成date,在网上查需要转换函数,请问大侠如何转换,具体点,比如在哪里敲那个命令。
谢谢各位大侠,小弟写的罗嗦了点,各位莫怪!

解决方案 »

  1.   

    select * to_date(col_name,'YYYY-MM-DD HH24:MI:SS') from tbl
      

  2.   

    select  to_date(col_name,'YYYY-MM-DD HH24:MI:SS') from tbl
    多了个星。
      

  3.   

    以上,Y代表年,M代表月,D代表日,HH24代表24小时制的时,MI分,SS秒,按照你的varchar字段这6项的排列来对应组合,注意空格等。
      

  4.   

    这要看你转换的日期格式是什么
     现列举几种:
    select to_date('20100130','yyyymmdd') from dual;
    select to_date('01-5月-05','dd-mon-yy') from dual;
    select * to_date('2010-01-30 18:30:00','YYYY-MM-DD HH24:MI:SS') from dual;
    ....
      还有很多!
      

  5.   

    1. add新列,类型为date
    2. 新列内容根据旧列update,to_date
    3. drop掉旧列
    4. 重命名新列为旧列名
      

  6.   

    INSERT  INTO  TEST VALUES  ( to_date ( '2007-12-20 18:31:34' , 'YYYY-MM-DD HH24:MI:SS' ) ) ; 
      

  7.   

    大侠crazylaa所说的方法:select  to_date(col_name,'YYYY-MM-DD HH24:MI:SS') from tbl 
    我试了下,提示‘ORA-01843:无效的月份’不知道是怎么回事。还有就是我要转换的是一列的数据,都是‘0000-00-00’格式的,4、6楼的大侠所举的例子是不是针对
    某个特定的值?我不是很理解,本人太菜了,大侠莫怪嘿嘿,请说滴再明白点点……
      

  8.   

    你原先的格式是0000-00-00,说明是yyyy-mm-dd的格式
    那就select to_date(col_name||' 00:00:00', 'YYYY-MM-DD HH24:MI:SS') from tbl
    这样查询出来的数据就是0000-00-00 00:00:00的date类型格式
      

  9.   

    我查了下资料,可以用convert 或者cast转换,我自己正在研究中,有结果了告诉大家
      

  10.   

    8楼说的,我直接输入:
    select to_date(bday||' 00:00:00', 'YYYY-MM-DD HH24:MI:SS') from bbs其中bday是列名,bbs是表名,仍然报错说是‘无效的月份’是不是我输入错了啊?本人小菜鸟,莫笑
      

  11.   

    你确定你的数据格式是yyyy-mm-dd的格式?
      

  12.   

    确定是啊,数据原来在mysql里面,是date类型,默认是0000-00-00,用户填写后就是用户的生日了,不知大侠明白么?现在以varchar2导入到Oracle里了还是以0000-00-00这种格式显示的
      

  13.   

    应该还是数据的问题,如果确定是yyyy-mm-dd的格式,应该不会有问题的。
    检查下数据格式吧。
      

  14.   

    我查了下资料,通过sql server可以转换下,但是还是不能导入到Oracle
    语句是这样的:
    select *,
    convert (smalldatetime ,bday) as bday
    from user1
      

  15.   

    报告各位大侠,我有解决办法了虽然很复杂呵呵1,将mysql的原文件以.sql 文件导出,修改原文件中的0000-00-00为‘null’
    2,将修改好的文件再导回mysql,并把date修改为varchar
    3,将修改好的表以varchar导入sql server
    4,用sql server把表导入Oracle的date中至此,大功告成!
    注意:第三步中,不经过sql server直接导入oracle 的date不可以,我做过实验了,不知为什么,还望大侠解释!感谢各位大侠的帮助!感激!