Oracle ОГРАНИЧЕНИЕ для обеспечения нуля секунд - PullRequest
0 голосов
/ 14 июля 2020

Есть ли способ создать ОГРАНИЧЕНИЕ в столбце даты, который будет проверять, являются ли секунды значением, отличным от 0

Я хочу разрешить значения только в этом формате MMDDYYYY HH24: MI

Я знаю, что следующее будет нарушением, если значения часов, минут или секунд отличны от нуля.

CONSTRAINT dt_chk check (dt = trun c (dt, 'dd'))

Ответы [ 2 ]

5 голосов
/ 14 июля 2020

Просто усекайте до минут вместо дней:

CONSTRAINT dt_chk check (dt=trunc(dt,'MI'))

db <> fiddle

Подробнее см. в документации .

0 голосов
/ 14 июля 2020

Другой способ сделать это - использовать ограничение следующим образом:

SQL> alter session set nls_date_format = 'dd.mm.yyyy hh24:mi:ss' ;

Session altered.

SQL> create table test.test_chk ( c1 date );

Table created.

SQL> alter table test.test_chk add constraint check_second check ( extract(second from cast(c1 as timestamp)) = 0 );

Table altered.

SQL>  insert into test.test_chk values ( '01.01.2020 13:15:22' ) ;
 insert into test.test_chk values ( '01.01.2020 13:15:22' )
*
ERROR at line 1:
ORA-02290: check constraint (TEST.CHECK_SECOND) violated


SQL> insert into test.test_chk values ( '01.01.2020 13:15:00' ) ;

1 row created.

SQL> commit;

Commit complete.

SQL>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...