Flink基础(四十六):FLINK SQL(二十二) 内置函数(四)日期函数

日期函数

  •  TO_TIMESTAMP
  •  

    语法

     
    TIMESTAMP TO_TIMESTAMP(BIGINT time)
    TIMESTAMP TO_TIMESTAMP(VARCHAR date)
    TIMESTAMP TO_TIMESTAMP(VARCHAR date, VARCHAR format)

    入参

     
    参数数据类型
    time BIGINT
     
    说明 单位为毫秒。
    date VARCHAR
     
    说明 默认格式为yyyy-MM-dd HH:mm:ss。如果您的date为非默认格式,请使用自定义函数编写Java代码进行转化,详情请参见自定义标量函数(UDF)
    format VARCHAR

    功能描述

    将BIGINT类型的日期或者VARCHAR类型的日期转换成TIMESTAMP类型。

    示例

    • 测试数据
       
      timestamp1(BIGINT)timestamp2(VARCHAR)timestamp3(VARCHAR)
      1513135677000 2017-09-15 00:00:00 20170915000000
    • 测试语句
       
      SELECT TO_TIMESTAMP(timestamp1) as var1,
       TO_TIMESTAMP(timestamp2) as var2,
       TO_TIMESTAMP(timestamp3, 'yyyyMMddHHmmss') as var3
      FROM T1;
    • 测试结果
       
      var1(TIMESTAMP)var2(TIMESTAMP)var3(TIMESTAMP)
      2017-12-13 03:27:57.0 2017-09-15 00:00:00.0 2017-09-15 00:00:00.0
  •  LOCALTIMESTAMP

语法

 
timestamp LOCALTIMESTAMP

入参

功能描述

返回当前系统的时间戳。

示例

  • 测试语句
     
    SELECT 
    LOCALTIMESTAMP as `result`
    FROM T1;
  • 测试结果
     
    result (TIMESTAMP)
    2018-07-27 14:04:38.998

语法

 
BIGINT NOW()
BIGINT NOW(a)

入参

 
参数数据类型
a INT

功能描述

  • 未指定参数时返回当前时区时间的时间戳,单位为秒。
  • 可以在括号内输入INT类型参数作为偏移值(单位:秒),返回偏移后的时间戳。例如,now(100)返回当前时间戳加100秒的时间戳。
     
    说明 偏移值a为NULL时,NOW(a)返回值为NULL。

示例

  • 测试数据
    表 1. T1
    a(INT)
    null
  • 测试语句
     
    SELECT 
     NOW() as now,
     NOW(100) as now_100,
     NOW(a) as now_null
    FROM T1;
  • 测试结果
     
    now(BIGINT)now_100(BIGINT)now_null(BIGINT)
    1403006911 1403007011 null

语法

 
TIMESTAMP CURRENT_TIMESTAMP
 
说明 Blink 3.6.0以下版本,语法格式为TIMESTAMP CURRENT_TIMESTAMP()。

功能描述

返回当前UTC(GMT+0)时间戳,时间戳单位为毫秒。

示例

  • 测试语句
     
    SELECT CURRENT_TIMESTAMP as var1
    FROM T1;
  • 测试结果
     
    var1(TIMESTAMP)
    2007-04-30 13:10:02.047

语法

 
VARCHAR DATE_FORMAT(TIMESTAMP time, VARCHAR to_format)
VARCHAR DATE_FORMAT(VARCHAR date, VARCHAR to_format)
VARCHAR DATE_FORMAT(VARCHAR date, VARCHAR from_format, VARCHAR to_format)

入参

 
参数数据类型
date VARCHAR
 
说明 默认日期格式:yyyy-MM-dd HH:mm:ss。
time TIMESTAMP
from_format VARCHAR
to_format VARCHAR

功能描述

将字符串类型的日期从源格式转换至目标格式。第一个参数(time 或 date)为源字符串。第二个参数from_format可选,为源字符串的格式,默认为yyyy-MM-dd hh:mm:ss。第三个参数为返回日期的格式,返回值为转换格式后的字符串类型日期。如果有参数为NULL或解析错误,则返回NULL。

示例

    • 测试数据
       
      date1(VARCHAR)datetime1(VARCHAR)nullstr(VARCHAR)
      0915-2017 2017-09-15 00:00:00 NULL

语法

 
BIGINT UNIX_TIMESTAMP()
BIGINT UNIX_TIMESTAMP(VARCHAR date)
BIGINT UNIX_TIMESTAMP(TIMESTAMP timestamp)
BIGINT UNIX_TIMESTAMP(VARCHAR date, VARCHAR format)

入参

 
参数数据类型
timestamp TIMESTAMP
date VARCHAR
 
说明 默认日期格式为yyyy-MM-dd HH:mm:ss
format VARCHAR
 
说明 默认格式为yyyy-MM-dd hh:mm:ss

功能描述

返回第一个参数date转换成的长整型的时间戳,单位为秒。无参数时返回当前时间的时间戳,单位为秒,与now语义相同。如果有参数为null或解析错误,返回null。

示例

  • 测试数据
     
    nullstr(VARCHAR)
    null
  • 测试语句
     
    SELECT UNIX_TIMESTAMP() as big1,
           UNIX_TIMESTAMP(nullstr) as big2
    FROM T1;
  • 测试结果
     
    big1(BIGINT)big2(BIGINT)
    1403006911 null
原文地址:https://www.cnblogs.com/qiu-hua/p/15000254.html