更新时间:2022-02-22 GMT+08:00

日期函数

DLI所支持的日期函数如表1所示。

表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表示当天所在的周属于的年份,一周从周日开始,周六结束,如果本周跨年,那么这周就算入下一年。