Литерал не соответствует форматной строке в Oracle 12c
Я работаю над 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');
Я хочу вставить значения.
2 ответа
Решение
Кажется, вам нужно отформатировать значения даты
такие как date'2014-07-07'
или же to_date('2014-07-07','yyyy-mm-dd')
Вы предоставляете строки в местах, где DATE
типы данных необходимы.
Oracle видит это и пытается привести вашу строку '2014-07-07' в DATE
тип данных. Это делается неявно, используя ваши текущие настройки для NLS_DATE_FORMAT
,
Документы Oracle для NLS_DATE_FORMAT
Вы не должны полагаться на настройку 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;