1

Teradata で YYYY-MM 形式のテーブルを作成し、デフォルト値を '0001-01' に設定したいと考えています。両方を行うことは可能ですか?..しかし、私はこれを行うことができます..

create table test(t1 date format 'yyyy-mm' not null);

4

2 に答える 2

1

どちらも完璧に機能しています。

構文については、以下を参照してください。

 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
于 2013-06-20T19:33:58.390 に答える
0

日付はINTEGERTeradata の値として内部的に保存されます。DEFAULTasを指定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
于 2013-06-20T19:12:52.800 に答える