Hive 日期函数详解目录及详细说明按功能分类并编号方便查阅。 目录一、获取当前时间1.1current_date1.2current_timestamp二、日期加减运算2.1date_add2.2date_sub2.3add_months2.4last_day2.5next_day三、日期差值计算3.1datediff3.2months_between四、提取日期/时间部分4.1year4.2month4.3day/dayofmonth4.4hour4.5minute4.6second4.7quarter4.8weekofyear4.9dayofweek五、日期格式化与类型转换5.1date_format5.2to_date5.3cast(转换为日期)5.4unix_timestamp5.5from_unixtime六、时区转换6.1to_utc_timestamp6.2from_utc_timestamp七、日期截断 / 特殊操作7.1trunc7.2date_part详细说明一、获取当前时间1.1current_date语法current_date()返回值DATE说明返回查询执行时的当前日期yyyy-MM-dd。示例SELECTcurrent_date();-- 2026-04-131.2current_timestamp语法current_timestamp()返回值TIMESTAMP说明返回当前时间戳精确到毫秒。示例SELECTcurrent_timestamp();-- 2026-04-13 15:30:45.123二、日期加减运算2.1date_add语法date_add(date, days)参数date(DATE/STRING),days(INT)返回值DATE说明给指定日期加上days天可为负数。示例SELECTdate_add(2026-04-13,5);-- 2026-04-18SELECTdate_add(2026-04-13,-3);-- 2026-04-102.2date_sub语法date_sub(date, days)返回值DATE说明减去days天相当于date_add(date, -days)。示例SELECTdate_sub(2026-04-13,5);-- 2026-04-082.3add_months语法add_months(date, months)返回值DATE说明增加months个月处理月末逻辑如1月31日加1个月得到2月28日。示例SELECTadd_months(2026-01-31,1);-- 2026-02-282.4last_day语法last_day(date)返回值DATE说明返回该日期所在月份的最后一天。示例SELECTlast_day(2026-04-13);-- 2026-04-302.5next_day语法next_day(date, dow)参数dow为星期几如 ‘Monday’, ‘Tue’, ‘Friday’ 等返回值DATE说明返回指定日期后下一个星期几的日期。示例SELECTnext_day(2026-04-13,Friday);-- 2026-04-17三、日期差值计算3.1datediff语法datediff(enddate, startdate)返回值INT说明返回enddate - startdate的天数。示例SELECTdatediff(2026-04-13,2026-04-01);-- 123.2months_between语法months_between(date1, date2)返回值DOUBLE说明返回date1 - date2的月数可能带小数。示例SELECTmonths_between(2026-04-13,2026-01-01);-- 3.387...四、提取日期/时间部分4.1year语法year(date)返回值INT示例SELECT year(2026-04-13);→20264.2month返回值INT(1~12)示例SELECT month(2026-04-13);→44.3day/dayofmonth返回值INT(1~31)示例SELECT day(2026-04-13);→134.4hour语法hour(timestamp)示例SELECT hour(2026-04-13 15:30:00);→154.5minute示例SELECT minute(2026-04-13 15:30:00);→304.6second示例SELECT second(2026-04-13 15:30:45);→454.7quarter返回值INT(1~4)示例SELECT quarter(2026-04-13);→24.8weekofyear返回值INT(1~53)示例SELECT weekofyear(2026-04-13);→164.9dayofweek返回值INT(1星期一, 7星期日)示例SELECT dayofweek(2026-04-13);→1五、日期格式化与类型转换5.1date_format语法date_format(date, pattern)返回值STRING说明使用 JavaSimpleDateFormat模式将日期转为字符串。示例SELECTdate_format(2026-04-13,yyyy年MM月dd日);-- 2026年04月13日5.2to_date语法to_date(string)返回值DATE说明将日期时间字符串的日期部分提取为DATE类型。示例SELECTto_date(2026-04-13 15:30:00);-- 2026-04-135.3cast语法cast(string as date)返回值DATE说明仅当字符串为yyyy-MM-dd格式时有效。示例SELECTcast(2026-04-13asdate);5.4unix_timestamp语法unix_timestamp([date[, pattern]])返回值BIGINT说明将日期字符串转为 Unix 时间戳秒。无参数时返回当前时间戳。示例SELECTunix_timestamp(2026-04-13 15:30:00,yyyy-MM-dd HH:mm:ss);5.5from_unixtime语法from_unixtime(unixtime[, pattern])返回值STRING说明将 Unix 时间戳转为指定格式的字符串默认yyyy-MM-dd HH:mm:ss。示例SELECTfrom_unixtime(1713000000,yyyy-MM-dd);六、时区转换6.1to_utc_timestamp语法to_utc_timestamp(timestamp, timezone)返回值TIMESTAMP说明将给定时区的时间戳转为 UTC 时间戳。示例SELECTto_utc_timestamp(2026-04-13 15:30:00,Asia/Shanghai);6.2from_utc_timestamp语法from_utc_timestamp(timestamp, timezone)返回值TIMESTAMP说明将 UTC 时间戳转为指定时区的时间戳。示例SELECTfrom_utc_timestamp(2026-04-13 07:30:00,Asia/Shanghai);七、日期截断 / 特殊操作7.1trunc语法trunc(date, format)返回值DATE说明将日期截断到指定单位。format可选YY、MM、DD等。示例SELECTtrunc(2026-04-13,MM);-- 2026-04-01 (当月第一天)7.2date_part语法date_part(field, source)返回值INT说明SQL 标准函数提取field如 ‘year’, ‘month’, ‘day’, ‘hour’ 等的值。示例SELECTdate_part(year,2026-04-13);-- 2026⚠️ 重要注意事项输入格式多数函数要求日期字符串为yyyy-MM-dd格式否则返回NULL。可使用unix_timestamp(...)from_unixtime(...)进行格式转换。NULL 处理任何参数为NULL时结果均为NULL。时区TIMESTAMP类型默认 UTC 时区unix_timestamp/from_unixtime受hive.local.time.zone影响。版本差异Hive 3.0 之前to_date返回STRING之后返回DATE。