2017-04-10 20 views
0

テーブルを作成しようとしましたが、属性 'appdate'の1つに時刻も含むデータ型の日付が必要です。私は、charを使用しようとしましたが、無効な関係演算子が表示されます。私はこれをするのですか?チェック制約が不要であるように、OracleではOracleの日付と時刻のデータ型

SQL> create table appointment 
2 (StaffID char(10), constraint appointment_staffid_fk 
    3 foreign key (staffid) references staff (staffid), 
    4 PatientNum varchar2(10), constraint appointment_PatientNum_fk 
    5 foreign key (patientnum) references patient (patientnum), 
    6 appdate date 
    7 constraint appointment_appdate_ch check (to_char(appdate, "mm/dd/yyyy hh24:mi:ss")) 
    8 ); 
constraint appointment_appdate_ch check (to_char(appdate, "mm/dd/yyyy hh24:mi:ss")) 
                        * 
ERROR at line 7: 
ORA-00920: invalid relational operator 
+1

日付に制約を追加する必要はありません。 –

+0

あなたの質問は不明です。有効な日付と無効な日付を含むように編集して、無効なものが無効である理由を説明してください。 –

+1

列に「DATE」を宣言すると、データベースにはそのように格納されていることが保証されます。以下の答えに示すように、DATEにはデフォルトでTIMEコンポーネントがOracleにあります。 – thatjeffsmith

答えて

1

DATEデータ型は、常に時間成分を有しています。

それは7- or 8- bytesとして内部に格納されます。

BYTE STORES 
---- -------------------------- 
1 TRUNC(Year/100) + 100 
2 MOD(Year, 100) + 100 
3 Month 
4 Day 
5 Hour + 1 
6 Minute + 1 
7 Seconds + 1 

あなたは時間コンポーネントを設定していない場合でも、それはまだデータベースに保存されているが、時間00:00:00を持っていている(ので、最後の3つのバイトは各セットになります〜1)。

関連する問題