• 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

    本文来自博客园,作者:秋华,转载请注明原文链接:https://www.cnblogs.com/qiu-hua/p/15058749.html

  • 相关阅读:
    Guava缓存list集合进行滤操作导致多次获取相同key返回数据不一致问题
    公私钥、证书、哈希、加密的要点
    .Net Core MVC Razor输出字符串方法(javascript中嵌入razor)
    AspNetCore.Mvc 使用CreatedAtRoute返回新创建的值
    Asp.Net Core MVC 中富文本编辑器CKEditor 5的配置及使用
    ubuntu PC/嵌入式 开机启动项问题
    速腾雷达没有数据的问题
    VS2017 + Visual Leak Detector 内存泄漏排查(VLD内存泄漏排查)
    基于SpringBoot实现SSM框架整合
    Spring之IOC思想
  • 原文地址:https://www.cnblogs.com/qiu-hua/p/15058749.html
Copyright © 2020-2023  润新知