Как отформатировать столбец с датой в формате ГГГГ-ММ-ДД - PullRequest
1 голос
/ 28 сентября 2019

Я создаю новую таблицу, и мне нужен столбец с типом данных DATE, чтобы иметь формат YYYY-MM-DD при инициализации столбца.Я использовал CHECK TO_DATE (), но я получаю сообщение об ошибке, которое может прийти из-за того, как я ввожу значение в таблицу?

Я пробовал my_date DATE CHECK (my_date = TO_DATE (my_date,'ГГГГ-ММ-ДД')

CREATE TABLE my_table(mytable_id VARCHAR(2) PRIMARY KEY
          my_date DATE NOT NULL
          CHECK (my_date = TO_DATE(my_date,'YYYY-MM-DD')));

INSERT INTO my_table VALUES('01','2019-09-28');
SELECT * FROM my_table;

Я ожидал, что мои столбцы и строки, но вместо этого он выдает мне сообщение об ошибке ORA-01861: литерал не соответствует строке формата. Я пробовал несколько способовно ничего не работает. Спасибо за вашу помощь.

1 Ответ

4 голосов
/ 28 сентября 2019

В вашей схеме my_date уже является датой, вы не можете конвертировать дату в дату, эта строка не имеет смысла:

my_date DATE NOT NULL
CHECK (my_date = TO_DATE(my_date,'YYYY-MM-DD')));

Вы можете написать to_date для приведения строки кdate:

INSERT INTO my_table VALUES('01',TO_DATE('2019-09-28'));

Вы должны понимать, что Oracle не хранит date в строковом формате, Oracle хранит date во внутреннем двоичном формате, потому что это, вы должны привести от строки квнутреннее двоичное представление для date.

Если вы хотите отформатировать дату на выходе, используйте to_char:

select to_char( my_date, 'YYYY-MM-DD' ) as myFormatedDate
from my_table;
...