Как наложить ограничение на формат даты в ORACLE - PullRequest
0 голосов
/ 06 января 2020

говорят, что мой обычный формат даты - '14 -jan-2019 ', и я хочу, чтобы моя дата принималась только как' ГГГГ-ММ-ДД ', как мне это сделать? и могу ли я изменить ян на фактическое число?

Ответы [ 2 ]

2 голосов
/ 07 января 2020

A DATE тип данных не имеет формата - он хранится внутри как 7 байтов , представляющих год (2 байта) и месяц, день, час, минуту и ​​секунду (1 байт каждый).

'14-JAN-2019' - это не дата - это текстовый литерал.

Если вы хотите сохранить значения даты, используйте тип данных DATE.

Если вы хотите чтобы в качестве входных данных принимались только строки указанного формата c, то в любом пользовательском интерфейсе, который вы используете для связи с базой данных, принимайте только этот формат. Если вы конвертируете строки в DATE s и хотите получить точный формат, вы можете использовать:

TO_DATE( '2019-01-14', 'fxYYYY-MM-DD' )

Примечание: модель формата fx будет означать, что ожидается точный формат и типичные правила преобразования строки в дату не будут применяться.

2 голосов
/ 06 января 2020

По моему мнению, правильный / правильный способ сделать это - объявить ваш столбец даты (или переменную или чем-то еще) как ДАТА , например

create table test (date_column date);

или

declare
  l_date_variable date;
begin
  ...

При этом вы позволите базе данных позаботиться о допустимых значениях.

После этого вы сможете вводить данные любым удобным для вас способом, используя любую действительную маску формата даты, например,

to_date('06.01.2020', 'dd.mm.yyyy')
date '2020-01-06'
to_date('2020-06-01', 'yyyy-dd-mm')

et c. - все эти значения будут действительными .

...