文档首页 > > 工具指南> Migration Tool SQL语法迁移工具> Teradata语法迁移> 日期和时间函数

日期和时间函数

分享
更新时间: 2019/08/09 GMT+08:00

DATE

Migration Tool支持迁移Teradata数据库SELECT语句中的DATE FORMAT,使用TO_CHAR并以源格式显示日期。如果日期格式是一个表达式(例如:Start_Dt + 30)或者WHERE语句包含一个表达式(例如:WHERE Start_Dt > End_Dt),则不会执行此转换。

详情请参见转换类型为DATE(无DATE关键字)

说明:
  • 无论SELECT语句是否具有列别名,都可以进行迁移。
  • 子级别查询和内部查询不支持日期格式化,仅外部查询支持。
  • 关于日期格式化,如果使用SCHEMA名称创建表,则后续SELECT语句仍需包含模式名称。在以下示例中,SELECT语句中的表TEMP_TBL不会按原样迁移。
    CREATE TABLE ${SCH}.TEMP_TBL
             (C1 INTEGER
             ,C2 DATE FORMAT 'YYYY-MM-DD')
    PRIMARY INDEX(C1,C2);
     
    SELECT ${SCH}.TEMP_TBL.C2 FROM TEMP_TBL where ${SCH}.TEMP_TBL.C2 is not null;

输入:DATE FORMAT

SELECT 
          CASE 
               WHEN SUBSTR( CAST( CAST( SUBSTR( '20180631' ,1 ,6 ) || '01' AS DATE FORMAT 'YYYYMMDD' ) + abc_day - 1 AS FORMAT 'YYYYMMDD' ) ,1 ,6 ) = SUBSTR( '20180631' ,1 ,6 ) 
               THEN 1 
               ELSE 0 
          END 
     FROM 
          tab1 
;

输出

SELECT 
          CASE 
               WHEN SUBSTR( TO_CHAR( CAST( SUBSTR( '20180631' ,1 ,6 ) || '01' AS DATE ) + abc_day - 1 ,'YYYYMMDD' ) ,1 ,6 ) = SUBSTR( '20180631' ,1 ,6 ) 
               THEN 1 
               ELSE 0 
          END 
     FROM 
          tab1 
;

Migration Tool支持迁移日期值。如果输入DATE后又输入“YYYY-MM-DD”,则输出中的日期不会改变。 以下示例显示DATE到CURRENT DATE的转换。

输入:DATE
SELECT 
        t1.c1 
        ,t2.c2 
  FROM 
        $schema.tab1 t1 
        ,$schema.tab2 t2 
  WHERE 
        t1.c3 ^ = t1.c3 
        AND t2.c4 GT DATE 
;

输出

SELECT 
        t1.c1 
        ,t2.c2 
  FROM 
        "$schema".tab1 t1 
        ,"$schema".tab2 t2 
 WHERE 
        t1.c3 <> t1.c3 
        AND t2.c4 > CURRENT_DATE 
;

输入:DATE和"YYYY-MM-DD"

ALTER TABLE 
     $abc . tab1 ADD ( 
          col_date DATE DEFAULT DATE '2000-01-01' 
     ) 
;

输出

ALTER TABLE 
     "$abc" . tab1 ADD ( 
          col_date DATE DEFAULT DATE '2000-01-01' 
     ) 
;

输入:DATE减法

SELECT
          CAST( T1.Buyback_Mature_Dt - CAST( '${gsTXDate}' AS DATE FORMAT 'YYYYMMDD' ) AS CHAR( 5 ) )
     FROM
          tab1 T1
     WHERE
          T1.col1 > 10
;

输出

SELECT
          CAST( EXTRACT( 'DAY' FROM ( T1.Buyback_Mature_Dt - CAST( '${gsTXDate}' AS DATE ) ) ) AS CHAR( 5 ) )
     FROM
          tab1 T1
     WHERE
          T1.col1 > 10
;

TIMESTAMP

输入:TIMESTAMP

select CAST('20190811'||' '||'01:00:00' 
AS TIMESTAMP(0) 
FORMAT 'YYYYMMDDBHH:MI:SS'
) ;

输出

SELECT TO_TIMESTAMP( '20190811' || ' ' || '01:00:00' ,'YYYYMMDD HH24:MI:SS' ) ;

NEXT

输入:NEXT
SELECT c1, c2 
  FROM tab1 
 WHERE NEXT(c3) = CAST('2004-01-04' AS DATE FORMAT 'YYYY-MM-DD');

输出

 SELECT c1, c2
  FROM tab1
 WHERE c3 + 1 = CAST('2004-01-04' AS DATE);
分享:

    相关文档

    相关产品

文档是否有解决您的问题?

提交成功!

非常感谢您的反馈,我们会继续努力做到更好!

反馈提交失败,请稍后再试!

*必选

请至少选择或填写一项反馈信息

字符长度不能超过200

提交反馈 取消

如您有其它疑问,您也可以通过华为云社区问答频道来与我们联系探讨

跳转到云社区