【问题标题】:Inserting timestamp in oracle timestamp column在 oracle 时间戳列中插入时间戳
【发布时间】:2015-08-28 12:02:03
【问题描述】:

我正在尝试使用以下代码将 timestamp(6) 数据类型值插入到表中:

INSERT INTO TOY_STORE (TOY_STORE_ID,TOY_STORE_NAME,CITY,PHONENUMBER,STORE_OPENING_TIME,STORE_CLOSING_TIME)
    VALUES(1,'Kid''s Cave','Delhi',9912312312,'2014-04-01 09:10:12','2014-04-01 21:42:05');

但这是错误的 SQL 错误:ORA-01843:不是有效月份 01843. 00000 - “不是一个有效的月份” *原因:
*行动: 有人可以纠正我的代码

【问题讨论】:

    标签: sql oracle insert timestamp


    【解决方案1】:

    Oracle 有一个非标准的日期格式。您可以使用该格式 (DD/MMM/YYYY),使用 to_date() 函数或 DATE/TIMESTAMP 运算符。我认为这会奏效:

    INSERT INTO TOY_STORE (TOY_STORE_ID,T OY_STORE_NAME, CITY,PHONENUMBER, 
                           STORE_OPENING_TIME, STORE_CLOSING_TIME)
        VALUES(1, 'Kid''s Cave',' Delhi', 9912312312,
               TIMESTAMP '2014-04-01 09:10:12', TIMESTAMP '2014-04-01 21:42:05');
    

    【讨论】:

    • DATE/TIMESTAMP 运算符”实际上是标准的 ANSI SQL,用于编写日期/时间戳文字(也是我的首选方式)。 Oracle 的日期格式不是“非标准”的,因为其他写日期/时间戳文字的方式也是非标准的,并且需要进行隐式数据类型转换(这取决于客户端的语言环境设置)
    • @a_horse_with_no_name 。 . .虽然你是对的,但我认为 ISO 标准格式应该在任何地方都被接受——并且大多数数据库都能识别它们。
    【解决方案2】:

    您也可以在插入之前执行此命令:

    ALTER SESSION SET NLS_TIMESTAMP_FORMAT = 'yyyy-mm-dd hh24:mi:ss';
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-08-21
      • 1970-01-01
      • 2011-07-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多