HIVE日期函数大全

Hive 日期函数详解目录及详细说明,按功能分类并编号,方便查阅。


📑 目录

一、获取当前时间

  • 1.1 current_date
  • 1.2 current_timestamp

二、日期加减运算

  • 2.1 date_add
  • 2.2 date_sub
  • 2.3 add_months
  • 2.4 last_day
  • 2.5 next_day

三、日期差值计算

  • 3.1 datediff
  • 3.2 months_between

四、提取日期/时间部分

  • 4.1 year
  • 4.2 month
  • 4.3 day / dayofmonth
  • 4.4 hour
  • 4.5 minute
  • 4.6 second
  • 4.7 quarter
  • 4.8 weekofyear
  • 4.9 dayofweek

五、日期格式化与类型转换

  • 5.1 date_format
  • 5.2 to_date
  • 5.3 cast (转换为日期)
  • 5.4 unix_timestamp
  • 5.5 from_unixtime

六、时区转换

  • 6.1 to_utc_timestamp
  • 6.2 from_utc_timestamp

七、日期截断 / 特殊操作

  • 7.1 trunc
  • 7.2 date_part

详细说明

一、获取当前时间

1.1 current_date
  • 语法current_date()

  • 返回值DATE

  • 说明 :返回查询执行时的当前日期(yyyy-MM-dd)。

  • 示例

    sql 复制代码
    SELECT current_date();  -- 2026-04-13
1.2 current_timestamp
  • 语法current_timestamp()

  • 返回值TIMESTAMP

  • 说明:返回当前时间戳,精确到毫秒。

  • 示例

    sql 复制代码
    SELECT current_timestamp();  -- 2026-04-13 15:30:45.123

二、日期加减运算

2.1 date_add
  • 语法date_add(date, days)

  • 参数date (DATE/STRING), days (INT)

  • 返回值DATE

  • 说明 :给指定日期加上 days 天(可为负数)。

  • 示例

    sql 复制代码
    SELECT date_add('2026-04-13', 5);   -- 2026-04-18
    SELECT date_add('2026-04-13', -3);  -- 2026-04-10
2.2 date_sub
  • 语法date_sub(date, days)

  • 返回值DATE

  • 说明 :减去 days 天(相当于 date_add(date, -days))。

  • 示例

    sql 复制代码
    SELECT date_sub('2026-04-13', 5);   -- 2026-04-08
2.3 add_months
  • 语法add_months(date, months)

  • 返回值DATE

  • 说明 :增加 months 个月,处理月末逻辑(如1月31日加1个月得到2月28日)。

  • 示例

    sql 复制代码
    SELECT add_months('2026-01-31', 1);  -- 2026-02-28
2.4 last_day
  • 语法last_day(date)

  • 返回值DATE

  • 说明:返回该日期所在月份的最后一天。

  • 示例

    sql 复制代码
    SELECT last_day('2026-04-13');  -- 2026-04-30
2.5 next_day
  • 语法next_day(date, dow)

  • 参数dow 为星期几(如 'Monday', 'Tue', 'Friday' 等)

  • 返回值DATE

  • 说明:返回指定日期后下一个星期几的日期。

  • 示例

    sql 复制代码
    SELECT next_day('2026-04-13', 'Friday');  -- 2026-04-17

三、日期差值计算

3.1 datediff
  • 语法datediff(enddate, startdate)

  • 返回值INT

  • 说明 :返回 enddate - startdate 的天数。

  • 示例

    sql 复制代码
    SELECT datediff('2026-04-13', '2026-04-01');  -- 12
3.2 months_between
  • 语法months_between(date1, date2)

  • 返回值DOUBLE

  • 说明 :返回 date1 - date2 的月数(可能带小数)。

  • 示例

    sql 复制代码
    SELECT months_between('2026-04-13', '2026-01-01');  -- 3.387...

四、提取日期/时间部分

4.1 year
  • 语法year(date)
  • 返回值INT
  • 示例SELECT year('2026-04-13');2026
4.2 month
  • 返回值INT (1~12)
  • 示例SELECT month('2026-04-13');4
4.3 day / dayofmonth
  • 返回值INT (1~31)
  • 示例SELECT day('2026-04-13');13
4.4 hour
  • 语法hour(timestamp)
  • 示例SELECT hour('2026-04-13 15:30:00');15
4.5 minute
  • 示例SELECT minute('2026-04-13 15:30:00');30
4.6 second
  • 示例SELECT second('2026-04-13 15:30:45');45
4.7 quarter
  • 返回值INT (1~4)
  • 示例SELECT quarter('2026-04-13');2
4.8 weekofyear
  • 返回值INT (1~53)
  • 示例SELECT weekofyear('2026-04-13');16
4.9 dayofweek
  • 返回值INT (1=星期一, 7=星期日)
  • 示例SELECT dayofweek('2026-04-13');1

五、日期格式化与类型转换

5.1 date_format
  • 语法date_format(date, pattern)

  • 返回值STRING

  • 说明 :使用 Java SimpleDateFormat 模式将日期转为字符串。

  • 示例

    sql 复制代码
    SELECT date_format('2026-04-13', 'yyyy年MM月dd日');  -- 2026年04月13日
5.2 to_date
  • 语法to_date(string)

  • 返回值DATE

  • 说明 :将日期时间字符串的日期部分提取为 DATE 类型。

  • 示例

    sql 复制代码
    SELECT to_date('2026-04-13 15:30:00');  -- 2026-04-13
5.3 cast
  • 语法cast(string as date)

  • 返回值DATE

  • 说明 :仅当字符串为 yyyy-MM-dd 格式时有效。

  • 示例

    sql 复制代码
    SELECT cast('2026-04-13' as date);
5.4 unix_timestamp
  • 语法unix_timestamp([date[, pattern]])

  • 返回值BIGINT

  • 说明:将日期字符串转为 Unix 时间戳(秒)。无参数时返回当前时间戳。

  • 示例

    sql 复制代码
    SELECT unix_timestamp('2026-04-13 15:30:00', 'yyyy-MM-dd HH:mm:ss');
5.5 from_unixtime
  • 语法from_unixtime(unixtime[, pattern])

  • 返回值STRING

  • 说明 :将 Unix 时间戳转为指定格式的字符串(默认 yyyy-MM-dd HH:mm:ss)。

  • 示例

    sql 复制代码
    SELECT from_unixtime(1713000000, 'yyyy-MM-dd');

六、时区转换

6.1 to_utc_timestamp
  • 语法to_utc_timestamp(timestamp, timezone)

  • 返回值TIMESTAMP

  • 说明:将给定时区的时间戳转为 UTC 时间戳。

  • 示例

    sql 复制代码
    SELECT to_utc_timestamp('2026-04-13 15:30:00', 'Asia/Shanghai');
6.2 from_utc_timestamp
  • 语法from_utc_timestamp(timestamp, timezone)

  • 返回值TIMESTAMP

  • 说明:将 UTC 时间戳转为指定时区的时间戳。

  • 示例

    sql 复制代码
    SELECT from_utc_timestamp('2026-04-13 07:30:00', 'Asia/Shanghai');

七、日期截断 / 特殊操作

7.1 trunc
  • 语法trunc(date, format)

  • 返回值DATE

  • 说明 :将日期截断到指定单位。format 可选 'YY''MM''DD' 等。

  • 示例

    sql 复制代码
    SELECT trunc('2026-04-13', 'MM');  -- 2026-04-01 (当月第一天)
7.2 date_part
  • 语法date_part(field, source)

  • 返回值INT

  • 说明 :SQL 标准函数,提取 field(如 'year', 'month', 'day', 'hour' 等)的值。

  • 示例

    sql 复制代码
    SELECT date_part('year', '2026-04-13');  -- 2026

⚠️ 重要注意事项

  • 输入格式 :多数函数要求日期字符串为 yyyy-MM-dd 格式,否则返回 NULL。可使用 unix_timestamp(...) + from_unixtime(...) 进行格式转换。
  • NULL 处理 :任何参数为 NULL 时,结果均为 NULL
  • 时区TIMESTAMP 类型默认 UTC 时区;unix_timestamp/from_unixtimehive.local.time.zone 影响。
  • 版本差异 :Hive 3.0 之前 to_date 返回 STRING,之后返回 DATE

相关推荐
Zhu7586 小时前
使用腾讯CNB构建Hadoop定制容器镜像
大数据·hadoop·分布式
TTBIGDATA7 小时前
【Ambari Plus】13.Spark 安装
大数据·hadoop·分布式·spark·ambari·sqoop·ambari plus
AllData公司负责人10 小时前
数据集成管理|AIIData数据中台实现MySQL、Hive、Oracle一键接入Doris
大数据·数据库·人工智能·hive·mysql·oracle·数据分析
泰克教育官方账号12 小时前
泰涨知识 | Hive集群环境部署
数据仓库·hive·hadoop
婉然从物14 小时前
Flink SQL 元数据持久化实战:从“每次重启表消失”到“Hive Metastore 永久存储”
hive·sql·flink
龙石数据1 天前
MySQL 全量同步到 Hive 怎么做?三步配置教程
数据库·hive·mysql·数据治理·数据中台
心中有国也有家1 天前
E-Brufen 技术选型全景:Flutter + 鸿蒙 + Hive CE
hive·hadoop·学习·flutter·华为·harmonyos
数据库小学妹1 天前
数据库架构入门到进阶:单机、主从、分库分表到分布式的选型实战
数据仓库·分布式数据库·数据治理·数据库架构·架构设计·数据分层
DataPulse*2 天前
Hive常用参数调优十二板斧
hive·hadoop·硬件架构
TTBIGDATA2 天前
【Ambari Plus】12.Flink 安装
hive·hadoop·flink·ambari·hdp·cdh·bigtop