2017-05-22 18 views
3

列「ttime」の値が10:0022:00の範囲内にあるテーブルを作成する必要があります。ここでは」コード:SQL Developerの列の制約を確認してください

create table test ( 
    ttime date, 
    CONSTRAINT CHECK_ttime CHECK(ttime >= TO_DATE('10:00', 'HH24:MI') AND 
           ttime <= TO_DATE('22:00', 'HH24:MI')) 
); 

しかし、私は、このテーブルを作成するときに、エラーが発生します。

ORA-02436:日付またはシステム変数が誤ってCHECK 制約で指定された

方法それを避けることはできますか?どうしたの?

答えて

3

このような制約を適用するには、ttimeカラムから時間を抽出する必要があります。文字列リテラルとして表現された日付の時間部分('10:00')をDATEデータ型の値に変換すると、日付部分は現在の月と年の最初の日にデフォルト設定されます。したがって、TO_DATE('10:00', 'HH24:MI')01/05/2017 10:00:00になり、条件は

ttime >= 01/05/2017 10:00:00 and ttime <= 01/05/2017 22:00:00 

注:ANDORで交換する必要があります。 ttimeは、ある値より小さくすることはできず、同時に同じ値より大きくすることはできません。

は、次のようにオプションの1つとして、あなたの制約を定義することができ、と述べた:

constraint t1_chk01 check (to_number(to_char(c1, 'HH24MI')) 
          between 1000 and 2200) 
関連する問題