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