Teradata で YYYY-MM 形式のテーブルを作成し、デフォルト値を '0001-01' に設定したいと考えています。両方を行うことは可能ですか?..しかし、私はこれを行うことができます..
create table test(t1 date format 'yyyy-mm' not null);
Teradata で YYYY-MM 形式のテーブルを作成し、デフォルト値を '0001-01' に設定したいと考えています。両方を行うことは可能ですか?..しかし、私はこれを行うことができます..
create table test(t1 date format 'yyyy-mm' not null);
どちらも完璧に機能しています。
構文については、以下を参照してください。
BTEQ -- Enter your SQL request or BTEQ command:
ct t1(x1 int,y1 date format 'yyyy-mm' not null default date '0001-01-01');
ct t1(x1 int,y1 date format 'yyyy-mm' not null default date '0001-01-01');
*** Table has been created.
*** Total elapsed time was 1 second.
BTEQ -- Enter your SQL request or BTEQ command:
ins t1(1,'2011-11');
ins t1(1,'2011-11');
*** Insert completed. One row added.
*** Total elapsed time was 1 second.
BTEQ -- Enter your SQL request or BTEQ command:
ins t1(2,);
ins t1(2,);
*** Insert completed. One row added.
*** Total elapsed time was 1 second.
BTEQ -- Enter your SQL request or BTEQ command:
sel * from t1;
sel * from t1;
*** Query completed. 2 rows found. 2 columns returned.
*** Total elapsed time was 1 second.
x1 y1
----------- -------
1 2011-11
2 0001-01
日付はINTEGER
Teradata の値として内部的に保存されます。DEFAULT
asを指定DATE '0001-01-01'
し、FORMAT
句が書式設定されたデータをクライアントに返すようにする必要があります。これは、「yyyy-mm」値ではなく、有効な日付としてデータをロードする必要があることも意味します。
編集:
/* Test results in Teradata Studio 14.2 via JDBC connection to Teradata 13.10 */
create table MyDB.MyTable
(x1 date format 'yyyy-mm' not null default date '0001-01-01');
insert into MyDB.MyTable values (date '2013-01-01'); -- Succeeds
insert into MyDB.MyTable values ('2013-02'); -- Fails
insert into MyDB.MyTable values (date '2013-02'); -- Fails
select * from cms_work_comm_prd.t5; -- Returns to Teradata Studio (JDBC): 2013-01-01