本文介绍 SparkSQL 中的日期函数语法。
本文同时提供
新增计算列
公式写法和 SparkSQL 语法写法,用户可自行选择。
推荐使用FineDataLink
新增计算列
中的
DATETONUMBER-日期转化为13位时间戳
也可以使用 SparkSQL 语法写法:
语法
|
示例
|
unix_timestamp()
:获取本地时区下的时间戳
|
select unix_timestamp()
|
from_unixtime(bigint unixtime[, string format])
:将时间的秒值转换 成 format 格式 ,如 from_unixtime(1250111000,"yyyy-MM-dd") 得到 2009-03-12
|
select from_unixtime(1557737000,"yyyy-MM-dd hh:mm:ss")
|
unix_timestamp(string date)
:将格式为 yyyy-MM-dd HH:mm:ss 的时间字符串转换成时间戳, 如 unix_timestamp('2009-03-20 11:30:01') = 1237573801。
|
select unix_timestamp('2019-05-13 04:43:20')
|
unix_timestamp(string date, string pattern)
:将指定时间字符串格式字符串转换成 Unix 时间 戳,如果格式不对返回 0,如:unix_timestamp('2009-03-20', 'yyyy-MM-dd') = 1237532400
|
select unix_timestamp('2019/05/13 04:43:20',"yyyy/MM/dd hh:mm:ss"
|
add_months(string start_date, int num_months)
:返回当前时间下再增加 num_months 个月的
日期。
示例:select add_months('2019-05-13',120)
推荐使用 FineDataLink
新增计算列
中的公式
date(year(today()),MONTH(today())+num_months,day(today()))
,详情参见:
常见日期公式
last_day(string date)
:返回这个月的最后一天的日期,忽略时分秒部分(HH:mm:ss)。
示例:select last_day('2019-02-01')
推荐使用 FineDataLink
新增计算列
中的公式
DATE(YEAR(日期),MONTH(日期)+1,1-1),详情参见:
常见日期公式
使用 SparkSQL 函数
trunc(string date, string format)
:返回时间的最开始年份或月份。
示例:
select trunc("2016-06-26","MM"),trunc("2016-06-26","YY")
则可以看到日期 2016-06-26 的年初和月初时间,如下图所示:
当然也可以
使用 FineDataLink
新增计算列
中的公式
:
DATE(YEAR(NOW()),01,01)、DATE(YEAR(NOW()),MONTH(NOW()),01)
更多示例详情参见:
常见日期公式
months_between(date1, date2)
:返回 date1 与 date2 之间相差的月份,如 date1>date2,则返回正,如果 date1<date2,则返回负,否则返回 0.0。
示例:select months_between("2019-04-01", "2019-06-01")
推荐使用 FineDataLink
新增计算列
中的公式
DATEDIF-日期差
date_format(date/timestamp/string ts, string fmt)
:按指定格式返回时间 date。
示例:select date_format('2019-05-13','MM/dd')
推荐使用 FineDataLink
新增计算列
中的公式
FORMAT-格式转换
,返回指定格式的文本时间数据。
next_day(string start_date, string day_of_week):返回当前时间的星期几所对应的日期。
示例:
select next_day('2019-05-13', 'TU')
即返回 2019-05-13 日以后星期二第一次出现的日期。 如下图所示: