日期函数
DLI所支持的日期函数如表1所示。
函数 |
返回值 |
描述 |
---|---|---|
from_unixtime(bigint unixtime[, string format]) |
STRING |
将时间戳转换为时间格式,格式为“yyyy-MM-dd HH:mm:ss”或“yyyyMMddHHmmss.uuuuuu”。 例如:select FROM_UNIXTIME(1608135036,'yyyy-MM-dd HH:mm:ss') |
unix_timestamp() |
BIGINT |
如果不带参数的调用,返回一个Unix时间戳(从“1970-01-01 00:00:00”到现在的秒数)为无符号整数。 |
unix_timestamp(string date) |
BIGINT |
指定日期参数调用UNIX_TIMESTAMP(),它返回“1970-01-01 00:00:00”到指定日期的秒数。 |
unix_timestamp(string date, string pattern) |
BIGINT |
转换pattern格式的日期到UNIX时间戳:unix_timestamp("2009-03-20", "yyyy-MM-dd") = 1237532400 |
to_date(string timestamp) |
STRING |
返回时间中的年月日,例如:to_date("1970-01-01 00:00:00") = "1970-01-01" |
year(string date) |
INT |
返回指定日期中的年份。 |
quarter(string date/timestamp/string) |
INT |
返回该date/timestamp/string所在的季度,如quarter('2015-04-01')=2。 |
month(string date) |
INT |
返回指定时间的月份,范围为1至12月。 |
day(string date) dayofmonth(string date) |
INT |
返回指定时间的日期。 |
hour(string date) |
INT |
返回指定时间的小时,范围为0到23。 |
minute(string date) |
INT |
返回指定时间的分钟,范围为0到59。 |
second(string date) |
INT |
返回指定时间的秒,范围为0到59。 |
weekofyear(string date) |
INT |
返回指定日期是一年中的第几周,范围为0到53。 |
datediff(string enddate, string startdate) |
INT |
两个时间参数的天数之差。 |
date_add(string startdate, int days) |
STRING |
给定时间,在此基础上加上指定的时间段。 |
date_sub(string startdate, int days) |
STRING |
给定时间,在此基础上减去指定的时间段。 |
from_utc_timestamp(string timestamp, string timezone) |
TIMESTAMP |
将UTC的时间戳转化为timezone所对应的时间戳,如from_utc_timestamp('1970-01-01 08:00:00','PST') returns 1970-01-01 00:00:00。 |
to_utc_timestamp(string timestamp, string timezone) |
TIMESTAMP |
将timezone所对应的时间戳转换为UTC的时间戳,如to_utc_timestamp('1970-01-01 00:00:00','PST') returns 1970-01-01 08:00:00。 |
current_date() |
DATE |
返回当前日期,如2016-07-04。 |
current_timestamp() |
TIMESTAMP |
返回当前时间,如2016-07-04 11:18:11.685。 |
add_months(string start_date, int num_months) |
STRING |
返回start_date在num_months个月之后的date。 |
last_day(string date) |
STRING |
返回date所在月份的最后一天,格式为yyyy-MM-dd,如2015-08-31。 |
next_day(string start_date, string day_of_week) |
STRING |
返回start_date之后最接近day_of_week的日期,格式为yyyy-MM-dd,day_of_week表示一周内的星期(如Monday、FRIDAY)。 |
trunc(string date, string format) |
STRING |
将date按照特定的格式进行清零操作,支持格式为MONTH/MON/MM, YEAR/YYYY/YY,如trunc('2015-03-17', 'MM') = 2015-03-01。 |
months_between(string date1, string date2) |
DOUBLE |
返回date1与date2之间的月份差。 |
date_format(date/timestamp/string ts, string fmt) |
STRING |
返回date/timestamp/string的格式化输出,格式支持JAVA的SimpleDateFormat格式,如date_format('2015-04-08', 'y') = '2015'。 其中,y表示Year, 如果是Y,则表示Week year。Week year表示当天所在的周属于的年份,一周从周日开始,周六结束,如果本周跨年,那么这周就算入下一年。 |