Flink基础(57):FLINK-SQL函数(20) 内置函数(15)日期函数(二)

语法

Date TO_DATE(INT time)
Date TO_DATE(VARCHAR date)
Date TO_DATE(VARCHAR date,VARCHAR format)

入参

 
参数数据类型
time INT
 
说明 表示从1970-1-1到所表示时间之间天数。
date VARCHAR
 
说明 默认格式为yyyy-MM-dd。
format VARCHAR

功能描述

将INT类型的日期或者VARCHAR类型的日期转换成DATE类型。

示例

  • 测试数据
     
    date1(INT)date2(VARCHAR)date3(VARCHAR)
    100 2017-09-15 20170915
  • 测试语句
     
    SELECT TO_DATE(date1) as var1,
     TO_DATE(date2) as var2,
     TO_DATE(date3,'yyyyMMdd') as var3
    FROM T1;
  • 测试结果
     
    var1(DATE)var2(DATE)var3(DATE)
    1970-04-11 2017-09-15 2017-09-15

语法

 
VARCHAR FROM_UNIXTIME(BIGINT unixtime[, VARCHAR format])

入参

 
参数数据类型
unixtime BIGINT
format VARCHAR
 
说明
  • 参数unixtime为长整型,是以秒为单位的时间戳。
  • 参数format可选,为日期格式,默认格式为yyyy-MM-dd HH:mm:ss,表示返回VARCHAR类型的符合指定格式的日期,如果有参数为null或解析错误,则返回null。

功能描述

返回值为VARCHAR类型的日期值,默认日期格式:yyyy-MM-dd HH:mm:ss,若指定日期格式按指定格式输出任一输入参数是NULL,返回NULL。

示例

  • 测试数据
     
    unixtime1(BIGINT)nullstr(VARCHAR)
    1505404800 null
  • 测试语句
     
    SELECT FROM_UNIXTIME(unixtime1) as var1, 
     FROM_UNIXTIME(unixtime1,'MMdd-yyyy') as var2,
     FROM_UNIXTIME(unixtime1,nullstr) as var3
    FROM T1;               
  • 测试结果
     
    var1(VARCHAR)var2(VARCHAR)var3(VARCHAR)
    2017-09-15 00:00:00 0915-2017 null

语法

INT DATEDIFF(VARCHAR enddate, VARCHAR startdate)
INT DATEDIFF(TIMESTAMP enddate, VARCHAR startdate)
INT DATEDIFF(VARCHAR enddate, TIMESTAMP startdate)
INT DATEDIFF(TIMESTAMP enddate, TIMESTAMP startdate)

入参

 
参数数据类型
startdate TIMESTAMP或VARCHAR
enddate TIMESTAMP或VARCHAR
 
说明 VARCHAR日期格式:yyyy-MM-dd或yyyy-MM-dd HH:mm:ss。

功能描述

计算从enddate到startdate两个时间的天数差值,返回整数。若有参数为NULL或解析错误,返回NULL。

示例

  • 测试数据
     
    datetime1(VARCHAR)datetime2(VARCHAR)nullstr(VARCHAR)
    2017-10-15 00:00:00 2017-09-15 00:00:00 null
  • 测试语句
     
    SELECT  DATEDIFF(datetime1, datetime2) as int1, 
            DATEDIFF(TIMESTAMP '2017-10-15 23:00:00',datetime2) as int2, 
            DATEDIFF(datetime2,TIMESTAMP '2017-10-15 23:00:00') as int3, 
            DATEDIFF(datetime2,nullstr) as int4, 
            DATEDIFF(nullstr,TIMESTAMP '2017-10-15 23:00:00') as int5, 
            DATEDIFF(nullstr,datetime2) as int6, 
            DATEDIFF(TIMESTAMP '2017-10-15 23:00:00',TIMESTAMP '2017-9-15 00:00:00')as int7
    FROM T1;
  • 测试结果
     
    int1(INT)int2(INT)int3(INT)int4(INT)int5(INT)int6(INT)int7(INT)
    30 31 -31 null null null 31

语法

 
VARCHAR DATE_SUB(VARCHAR startdate, INT days)
VARCHAR DATE_SUB(TIMESTAMP time, INT days)

入参

 
参数数据类型
startdate VARCHAR
 
说明 VARCHAR类型日期格式:yyyy-MM-dd或yyyy-MM-dd HH:mm:ss。
time TIMESTAMP
days INT

功能描述

返回startdate减去days天数的日期。返回VARCHAR类型的yyyy-MM-dd日期格式。如果有参数为null或解析错误,返回null。

示例

  • 测试数据
     
    date1(VARCHAR)nullstr(VARCHAR)
    2017-10-15 null
  • 测试语句
     
    SELECT DATE_SUB(date1, 30) as var1,
     DATE_SUB(TIMESTAMP '2017-10-15 23:00:00',30) as var2,
     DATE_SUB(nullstr,30) as var3
    FROM T1;
  • 测试结果
     
    var1(VARCHAR)var2(VARCHAR)var3(VARCHAR)
    2017-09-15 2017-09-15 null

 

语法

 
VARCHAR DATE_ADD(VARCHAR startdate, INT days)
VARCHAR DATE_ADD(TIMESTAMP time, INT days)

入参

 
参数数据类型
startdate TIMESTAMP或VARCHAR
 
说明 VARCHAR类型日期格式:yyyy-MM-dd 或 yyyy-MM-dd HH:mm:ss。
enddate TIMESTAMP
days INT

功能描述

返回指定startdate日期days天数后的VARCHAR类型日期,返回string格式的日期为yyyy-MM-dd。如果有参数为null或解析错误,返回null。

示例

  • 测试数据
     
    datetime1(VATCHAR)nullstr(VATCHAR)
    2017-09-15 00:00:00 null
  • 测试语句
     
    SELECT DATE_ADD(datetime1, 30) as var1,
     DATE_ADD(TIMESTAMP '2017-09-15 23:00:00',30) as var2,
     DATE_ADD(nullstr,30) as var3
    FROM T1;   
  • 测试结果
     
    var1(VARCHAR)var2(VARCHAR)var3(VARCHAR)
    2017-10-15 2017-10-15 null

 

posted @ 2021-07-25 19:36  秋华  阅读(7878)  评论(0编辑  收藏  举报