Hive 常用日期函数

简介: Hive 日期函数

前言

面试官:假如让你开发一个日期维度表,你会用到哪些日期相关的函数呢?

我:想一下啊。。。

常用日期函数

1. to_date:抽取日期部分

-- 抽取日期部分
select to_date('2022-04-08 20:18:41'); # 2022-04-08

2. unix_timestamp:返回当前或者指定时间的时间戳

-- 获取当前时间戳
select unix_timestamp(); # 1682348981
-- 获取某个具体时间的时间戳
select unix_timestamp("2020-08-28","yyyy-MM-dd"); # 1598544000

3. from_unixtime:将时间戳转为日期格式

select from_unixtime(1649419690); # 2022-04-08 20:08:10

4. current_date: 当前日期

select CURRENT_DATE; # 2023-04-24

5. current_timestamp: 当前日期+时间

select CURRENT_TIMESTAMP; # 2023-04-24 23:20:32.282

6. year:获取年

select year('2022-04-08 20:18:41'); # 2022

7. month:获取月

select month('2022-04-08 20:18:41'); # 4

8. day:获取日

select day('2022-04-08 20:18:41'); # 8

9. hour:获取时

select hour('2022-04-08 20:18:41'); # 20

10. minute:获取分

select minute('2022-04-08 20:18:41'); # 18

11. second:获取秒

select second('2022-04-08 20:18:41'); # 41

12. weekofyear:指定时间是一年中的第几周

select weekofyear('2022-04-08 20:18:41'); # 14

13. dayofmonth:指定时间是一个月中的第几天

select dayofmonth('2022-04-08 20:18:41'); # 8

14. add_months:日期加减月

select add_months('2022-04-08',3);  # 2022-07-08
select add_months('2022-04-08',-3);  # 2022-01-08

15. datediff:两个日期相差的天数(前 - 后)

select DATEDIFF('2022-04-18','2022-04-08'); # 10

16. date_add: 日期加天数

select date_add('2022-04-18',3);  # 2022-04-21

17. date_sub: 日期减天数

select date_sub('2022-04-18',3);  # 2022-04-15

注意:

date_add('2022-04-18',3) = date_sub('2022-04-18',-3)

date_add('2022-04-18',-3) = date_sub('2022-04-18',3)

18. last_day:日期的当月的最后一天

select LAST_DAY('2022-04-18'); # 2022-04-30

19. date_format:格式化日期

select DATE_FORMAT('2022-04-08 20:18:41','yyyy/MM/dd HH:hh:ss'); # 2022/04/08 20:18:41

案例

案例1:查询指定日期是周几

解析:先选一个基准日期1970-10-01(周四),指定日期-基准日期 + 4 得到值,再对7进行模运算,得到0-6表示是星期天-星期六。

# 假如指定日期为2023-04-24
case when pmod(datediff('2023-04-24','1970-10-01')+4,7) = 0
then 7
else pmod(datediff('2023-04-24','1970-10-01')+4,7)
end as day_week

案例2:查询指定日期是当月的第几周

解析:先查询出指定日期的在当年的周数 - 指定日期当月的月初日期在当年的周数 + 1

# 假如指定日期为2023-04-24
weekofyear('2023-04-24') - weekofyear('2023-04-01') + 1

总结

今天分享了Hive 中常用的日期函数的用法,在日常开发中,避免不了要和日期函数打交道,因此总结出来分享给别人,也方便自己以后忘记时再次拿出来进行复习!

相关文章
|
7月前
|
SQL HIVE
Hive LAG函数分析
Hive LAG函数分析
87 0
|
7月前
|
SQL JSON Java
Hive【Hive(四)函数-单行函数】
Hive【Hive(四)函数-单行函数】
|
2月前
|
SQL 分布式计算 Hadoop
Hadoop-14-Hive HQL学习与测试 表连接查询 HDFS数据导入导出等操作 逻辑运算 函数查询 全表查询 WHERE GROUP BY ORDER BY(一)
Hadoop-14-Hive HQL学习与测试 表连接查询 HDFS数据导入导出等操作 逻辑运算 函数查询 全表查询 WHERE GROUP BY ORDER BY(一)
57 4
|
2月前
|
SQL
Hadoop-14-Hive HQL学习与测试 表连接查询 HDFS数据导入导出等操作 逻辑运算 函数查询 全表查询 WHERE GROUP BY ORDER BY(二)
Hadoop-14-Hive HQL学习与测试 表连接查询 HDFS数据导入导出等操作 逻辑运算 函数查询 全表查询 WHERE GROUP BY ORDER BY(二)
43 2
|
7月前
|
SQL HIVE
hive高频函数(一)
hive高频函数(一)
59 0
|
3月前
|
SQL JavaScript 前端开发
Hive根据用户自定义函数、reflect函数和窗口分析函数
Hive根据用户自定义函数、reflect函数和窗口分析函数
42 6
|
7月前
|
SQL XML JSON
Hive函数全解——思维导图 + 七种函数类型
Hive函数全解——思维导图 + 七种函数类型
162 2
Hive函数全解——思维导图 + 七种函数类型
|
7月前
|
SQL 分布式计算 HIVE
Hive Cli / HiveServer2 中使用 dayofweek 函数引发的BUG!
在Hive 3.1.2和Spark 3.0.2集群环境中,遇到`dayofweek`函数bug。当`create_date`为字符串类型时,`dayofweek`函数结果错位。修复方法是将`create_date`转换为`date`类型。在Spark SQL中,原始代码能正常运行,未出现此问题。因此建议在Hive中使用转换后的日期类型以避免错误。
95 4
|
7月前
|
SQL HIVE
【Hive SQL】字符串操作函数你真的会用吗?
本文介绍了SQL中判断字符串是否包含子串的几种方法。`IN`函数判断元素是否完全等于给定元素组中的某项,而非包含关系。`INSTR`和`LOCATE`函数返回子串在字符串中首次出现的位置,用于检测是否存在子串。`SUBSTR`则用于提取字符串的子串。`LIKE`用于模糊匹配,常与通配符配合使用。注意`IN`并非用于判断子串包含。
533 3
|
7月前
|
SQL HIVE 索引
Hive【Hive(五)函数-高级聚合函数、炸裂函数】
Hive【Hive(五)函数-高级聚合函数、炸裂函数】