C的一个code中,如果有个字符数组存储的是“21NOV09 10:04:12.032”,要将它存入oracle表一个timestamp字段中,这里insert应该怎样写?谢谢!

解决方案 »

  1.   

    SQL> create table t1(t timestamp);Table created.
    SQL> insert into t1 values(to_timestamp('21NOV09 10:04:12.032','DDMONYY HH24:MI:
    SS.FF'));1 row created.SQL> select * from t1;T
    ---------------------------------------------------------------------------
    21-NOV-09 10.04.12.032000 AM
      

  2.   


    --考虑到你的系统语言关系,如果是中文楼上的方法会报错。
    [TEST@ora10gr1#2009-11-25/08:39:38] SQL>create table t1(t timestamp);Table created.[TEST@ora10gr1#2009-11-25/08:39:56] SQL>insert into t1 values(to_timestamp('21NOV09 10:04:12.032','DDMONYY HH24:MI:SS.FF'));
    insert into t1 values(to_timestamp('21NOV09 10:04:12.032','DDMONYY HH24:MI:SS.FF'))
                                       *
    ERROR at line 1:
    ORA-01843: not a valid month
    [TEST@ora10gr1#2009-11-25/08:39:56] SQL>insert into t1 values(to_timestamp('21NOV09 10:04:12.032','DDMONYY HH24:MI:SS.FF','nls_date_language=american'));1 row created.
      

  3.   


    为什么我在plsql中执行insert时,总提示'21NOV09'无效的月份?
      

  4.   

    在C程序中,将时间格式转换下,转换为标准的:'YYYY-MM-DD HH24:MI:SS'
      

  5.   


    还想请问下,如果存储:21NOV09 10:04:12.032
    创建的时候用:create table t1(t timestamp);而不用:create table t1(t timestamp(12));是为什么?不加字段长度就会默认存储任意长度?
      

  6.   


    oracle中日期相关的类型是不能指定长度的。 和 SqlServer有些不同。
      

  7.   

    补充一下,上面说的日期相关特指 date 类型, timestamp类型后面是可以加长度的。
    create table t1(t timestamp); 相当于 create table t1(t timestamp(6));
    既可以存秒下面6个小数点的信息,也就是 1/1000000 秒。timestamp后面的长度从 0~9。以上。。
      

  8.   

    补充一下,上面说的日期相关特指 date 类型, timestamp类型后面是可以加长度的。
    create table t1(t timestamp); 相当于 create table t1(t timestamp(6));
    既可以存秒下面6个小数点的信息,也就是 1/1000000 秒。timestamp后面的长度从 0~9。以上。。