【问题标题】:literal does not match format string in 12c Oracle文字与 12c Oracle 中的格式字符串不匹配
【发布时间】:2019-06-11 12:28:12
【问题描述】:

我正在使用 oracle 12c,但是当我执行查询时,我得到了

literal does not match format string

以下是我的查询:

INSERT INTO customers
  (customer_id, ciams_uid, title, fname, lname, email,
   dob, store_num, store_name, mobilephone, is_medical_card,
   scheme_number, status_code, create_date_time, last_update_time,
   is_locked, ciams_token, store_phone)
VALUES
  (1, '5', 'test', 'test', 'test', 'test@gmail.com',
   '2014-07-07', '5555555', 'test', '7845125487', 0,
   4555, 'klkl', '2014-07-01', '2014-07-07',
   0, 'dsdssd', '46464646');

我想插入值。

【问题讨论】:

  • 您的一列(或多列)很可能是日期时间/时间戳,并且您只传入一个没有时间组件的日期文字。
  • 您正在传递日期的字符串文字。在字符串前面加上关键字 DATE 以使它们成为日期文字。例如。 DATE '2014-07-07'.

标签: oracle sql-insert ora-01861


【解决方案1】:

看来您需要格式化日期值

date'2014-07-07'to_date('2014-07-07','yyyy-mm-dd')

【讨论】:

    【解决方案2】:

    您在需要 DATE 数据类型的地方提供字符串。

    Oracle 看到这一点并尝试将您的字符串“2014-07-07”强制转换为 DATE 数据类型。 这是使用 NLS_DATE_FORMAT 的当前设置隐式完成的。

    NLS_DATE_FORMAT 的 Oracle 文档

    您不应依赖 NLS_DATE_FORMAT 的设置来进行隐式日期转换。 相反,显式包含 DATE 文字、TIMESTAMP 文字或 TO_DATE 函数调用。

    datetime literals 的 Oracle 文档

    例子:

    SELECT DATE'2014-07-07' FROM DUAL;
    SELECT TIMESTAMP'2014-07-07 00:00:00' FROM DUAL;
    SELECT TO_DATE('2014-07-07','YYYY-MM-DD') FROM DUAL;
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-03-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-01-24
      • 2015-01-11
      相关资源
      最近更新 更多