Задать вопрос
@mosikus

Почему выдает ошибку literal does not match format string при добавлении даты?

Здравствуйте. Смотрю тут https://livesql.oracle.com/
Создаю таблицу
CREATE TABLE people(
last_name varchar2(64) NOT NULL,
first_name varchar2(64),
sex char NOT NULL CHECK(sex = 'f' OR sex = 'm'),
birthday date,
PRIMARY KEY(last_name, first_name, birthday)
);

затем пытаюсь добавить строку
INSERT INTO people (last_name, first_name, sex, birthday)
VALUES ('Иванов', 'Иван', 'm', '1999-04-04');

и получаю ошибку
ORA-01861: literal does not match format string ORA-06512: at "SYS.DBMS_SQL", line 1721

Как правильно записать дату?
  • Вопрос задан
  • 3843 просмотра
Подписаться 1 Простой Комментировать
Решения вопроса 2
@galaxy
Попробуйте TO_DATE:
INSERT INTO people (last_name, first_name, sex, birthday)
VALUES ('Иванов', 'Иван', 'm', to_date('1999-04-04', 'yyyy-mm-dd'));
Ответ написан
Комментировать
@Akina
Сетевой и системный админ, SQL-программист.
Формат литерала даты неявно определяется установкой NLS_TERRITORY, или может быть явно указан через NLS_DATE_FORMAT либо строкой форматирования.

Используй явное форматирование:
INSERT INTO people (last_name, first_name, sex, birthday)
VALUES ('Иванов', 'Иван', 'm', TO_DATE('1999-04-04', 'YYYY-MM-DD'));


DEMO
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы