2013-06-20 76 views
1

我想用YYYY-MM格式在teradata中創建表並將默認值設置爲'0001-01'。是否有可能做到這一點?..但是我能夠做到這一點..具有日期格式化的Teradata DDL

創建表格測試(t1日期格式'yyyy-mm'非空);

回答

0

日期在內部存儲爲Teradata中的INTEGER值。您必須將DEFAULT指定爲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 
+0

這意味着我必須將它們存儲爲字符而不是日期? – Anantha

+0

通過Teradata Studio添加基於Teradata 13.10測試的示例通過Teradata Studio 14.2 –

+0

非常棒,恭喜Anantha,您解決了兩個問題.. !! – user2407394

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 
+0

非常感謝您的澄清.. :) – Anantha

+0

DATE列允許使用默認值。 –

+0

感謝羅布,給我舉個例子..我會同意你的。 – user2407394