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

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM