2013-06-20 3 views
1

YYYY-MM 형식의 테라 데이타에서 테이블을 만들고 기본값을 '0001-01'로 지정하고 싶습니다. 둘 다 할 수 있습니까? .. 그러나 나는 이것을 할 수 있습니다 ..날짜 형식이있는 Teradata DDL

create table test (t1 날짜 형식 'yyyy-mm'not null);

답변

0

날짜는 내부적으로 Teradata의 INTEGER 값으로 저장됩니다. 을 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의 테스트를 기반으로 한 추가 예제 Teradata Studio를 통한 13.10 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

관련 문제