0

我正在使用 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');

我想插入值。

4

2 回答 2

2

看来您需要格式化日期值

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

于 2019-06-11T12:31:11.900 回答
1

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

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

NLS_DATE_FORMAT的 Oracle 文档

您不应依赖NLS_DATE_FORMAT隐式日期转换的设置。相反,明确地包括DATE文字、TIMESTAMP文字或TO_DATE函数调用。

日期时间文字的 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;
于 2019-06-11T13:03:42.800 回答