string | from_unixtime(bigint unixtime[, string format]) | 将unix纪元(1970-01-01 00:00:00 UTC)的秒数转换为一个字符串,该字符串表示当前系统时区中该时刻的时间戳,格式为“ 1970-01-01 00:00: 00”。 |
bigint | unix_timestamp() | 以秒为单位获取当前的Unix时间戳。此函数不是确定性的,其值在查询执行范围内也不是固定的,因此会阻止对查询的适当优化-自2.0版以来已弃用此函数,而推荐使用CURRENT_TIMESTAMP常量。 |
bigint | unix_timestamp(string date) | yyyy-MM-dd HH:mm:ss 使用默认时区和默认语言环境将时间字符串格式转换为Unix时间戳(以秒为单位),如果失败,则返回0:unix_timestamp('2009-03-20 11:30:01')= 1237573801 |
bigint | unix_timestamp(string date, string pattern) | 将具有给定模式的时间字符串(请参阅[ http://docs.oracle.com/javase/tutorial/i18n/format/simpleDateFormat.html])转换为Unix时间戳(以秒为单位),如果失败,则返回0:unix_timestamp('2009 -03-20','yyyy-MM-dd')= 1237532400。 |
pre 2.1.0: string 2.1.0 on: date | to_date(string timestamp) | 返回时间戳字符串(Hive 2.1.0之前)的日期部分:to_date(“ 1970-01-01 00:00:00”)=“ 1970-01-01”。从Hive 2.1.0开始,返回日期对象。 在Hive 2.1.0(HIVE-13248)之前,返回类型为String,因为创建方法时不存在Date类型。 |
int | year(string date) | 返回日期或时间戳字符串的年份部分:year(“ 1970-01-01 00:00:00”)= 1970,year(“ 1970-01-01”)= 1970。 |
int | quarter(date/timestamp/string) | 返回日期,时间戳或范围在1到4之间的字符串的一年的四分之一(从Hive 1.3.0开始)。示例:quarter('2015-04-08')= 2。 |
int | month(string date) | 返回日期或时间戳字符串的月份部分:month(“ 1970-11-01 00:00:00”)= 11,month(“ 1970-11-01”)= 11。 |
int | day(string date) dayofmonth(date) | 返回日期或时间戳字符串的日期部分:day(“ 1970-11-01 00:00:00”)= 1,day(“ 1970-11-01”)= 1。 |
int | hour(string date) | 返回时间戳的小时:hour('2009-07-30 12:58:59')= 12,hour('12:58:59')= 12。 |
int | minute(string date) | 返回时间戳的分钟。 |
int | second(string date) | 返回时间戳的秒数。 |
int | weekofyear(string date) | 返回时间戳字符串的星期数:weekofyear(“ 1970-11-01 00:00:00”)= 44,weekofyear(“ 1970-11-01”)= 44。 |
int | extract(field FROM source) | 从源中检索字段,例如天或小时(从Hive 2.2.0开始)。源必须是日期,时间戳,时间间隔或可以转换为日期或时间戳的字符串。支持的字段包括:日,星期几,小时,分钟,月,季度,秒,周和年。 例子:
-
select extract(month from "2016-10-20") results in 10. -
select extract(hour from "2016-10-20 05:06:07") results in 5. -
select extract(dayofweek from "2016-10-20 05:06:07") results in 5. -
select extract(month from interval '1-3' year to month) results in 3. -
select extract(minute from interval '3 12:20:30' day to second) results in 20.
|
int | datediff(string enddate, string startdate) | 返回从开始日期到结束日期的天数:datediff('2009-03-01','2009-02-27')= 2。 |
pre 2.1.0: string 2.1.0 on: date | date_add(date/timestamp/string startdate, tinyint/smallint/int days) | 添加开始日期的天数:date_add('2008-12-31',1)='2009-01-01'。 在Hive 2.1.0(HIVE-13248)之前,返回类型为String,因为创建方法时不存在Date类型。 |
pre 2.1.0: string 2.1.0 on: date | date_sub(date/timestamp/string startdate, tinyint/smallint/int days) | 减去开始日期的天数:date_sub('2008-12-31',1)='2008-12-30'。 在Hive 2.1.0(HIVE-13248)之前,返回类型为String,因为创建方法时不存在Date类型。 |
timestamp | from_utc_timestamp({any primitive type} ts, string timezone) | 将UTC中的timestamp *转换为给定的时区(从Hive 0.8.0开始)。 * 时间戳是一种原始类型,包括时间戳/日期,tinyint / smallint / int / bigint,float / double和十进制。 小数部分被视为秒。整数值以毫秒为单位。例如,from_utc_timestamp (2592000.0,'PST'),from_utc_timestamp (2592000000,'PST')和from_utc_timestamp (timestamp'1970-01-30 16:00:00','PST')都返回时间戳1970-01-30 08:00:00。 |
timestamp | to_utc_timestamp({any primitive type} ts, string timezone) | 将给定时区中的时间戳*转换为UTC(从Hive 0.8.0开始)。 * 时间戳是一种原始类型,包括时间戳/日期,tinyint / smallint / int / bigint,float / double和十进制。 小数部分被视为秒。整数值以毫秒为单位。例如,to_utc_timestamp(2592000.0,'PST'),to_utc_timestamp(2592000000,'PST')和to_utc_timestamp(timestamp'1970-01-30 16:00:00','PST')都返回时间戳1970-01-31 00:00:00。 |
date | current_date | 返回查询评估开始时的当前日期(从Hive 1.2.0开始)。同一查询中对current_date的所有调用均返回相同的值。 |
timestamp | current_timestamp | 返回查询评估开始时的当前时间戳(从Hive 1.2.0开始)。同一查询中对current_timestamp的所有调用均返回相同的值。 |
string | add_months(string start_date, int num_months, output_date_format) | 返回起始日期之后num_months的日期(从Hive 1.1.0开始)。start_date是字符串,日期或时间戳。num_months是一个整数。如果start_date是该月的最后一天,或者如果结果月份的天数少于start_date的天部分,则结果是结果月份的最后一天。否则,结果与start_date具有相同的日组成部分。默认输出格式为“ yyyy-MM-dd”。 在Hive 4.0.0之前,日期的时间部分将被忽略。 从Hive 4.0.0开始,add_months支持可选参数output_date_format,该参数接受一个String,该String表示输出的有效日期格式。这样可以在输出中保留时间格式。 例如 : add_months('2009-08-31',1)返回'2009-09-30'。 add_months('2017-12-31 14:15:16',2,'YYYY-MM-dd HH:mm:ss')返回'2018-02-28 14:15:16'。 |
string | last_day(string date) | 返回日期所属月份的最后一天(从Hive 1.1.0开始)。date是格式为“ yyyy-MM-dd HH:mm:ss”或“ yyyy-MM-dd”的字符串。日期的时间部分将被忽略。 |
string | next_day(string start_date, string day_of_week) | 返回第一个日期,该日期晚于start_date,并命名为day_of_week (从Hive 1.2.0开始)。start_date是字符串/日期/时间戳。day_of_week是2个字母,3个字母或一周中某天的全名(例如Mo,tue,FRIDAY)。start_date的时间部分将被忽略。 (我注:返回开始日期之后的第一个指定日期,例如第一个星期一、星期二等星期描述的日子) 例如:next_day('2015-01-14','TU')= 2015-01-20。 |
string | trunc(string date, string format) | 返回截断为格式指定单位的日期(从Hive 1.2.0开始)。支持的格式:MONTH / MON / MM,YEAR / YYYY / YY。 示例:trunc('2015-03-17','MM')= 2015-03-01。 |
double | months_between(date1, date2) | 返回日期date1和date2之间的月份数(从Hive 1.2.0开始)。如果date1晚于date2,则结果为正。如果date1早于date2,则结果为负。如果date1和date2是月份的同一天或月份的最后几天,则结果始终是整数。否则,UDF将基于31天的月份来计算结果的分数部分,并考虑时间分量date1和date2的差异。date1和date2类型可以是日期,时间戳或字符串,格式为“ yyyy-MM-dd”或“ yyyy-MM-dd HH:mm:ss”。结果四舍五入到小数点后8位。例如:months_between('1997-02-28 10:30:00','1996-10-30')= 3.94959677 |
string | date_format(date/timestamp/string ts, string fmt) | 将日期/时间戳记/字符串转换为日期格式fmt指定的格式的字符串值(从Hive 1.2.0开始)。支持的格式是Java SimpleDateFormat格式– https://docs.oracle.com/javase/7/docs/api/java/text/SimpleDateFormat.html 。第二个参数fmt应该是常量。示例:date_format('2015-04-08','y')='2015'。 date_format可用于实现其他UDF,例如:
- dayname(date)是date_format(date,'EEEE')
- dayofyear(date)是date_format(date,'D')
|