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

相关文章
|
4月前
|
SQL HIVE
Hive LAG函数分析
Hive LAG函数分析
67 0
|
4月前
|
SQL JSON Java
Hive【Hive(四)函数-单行函数】
Hive【Hive(四)函数-单行函数】
|
15天前
|
SQL JavaScript 前端开发
Hive根据用户自定义函数、reflect函数和窗口分析函数
Hive根据用户自定义函数、reflect函数和窗口分析函数
20 6
|
4月前
|
SQL HIVE
hive高频函数(一)
hive高频函数(一)
38 0
|
4月前
|
SQL XML JSON
Hive函数全解——思维导图 + 七种函数类型
Hive函数全解——思维导图 + 七种函数类型
82 2
Hive函数全解——思维导图 + 七种函数类型
|
4月前
|
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中使用转换后的日期类型以避免错误。
|
4月前
|
SQL HIVE
【Hive SQL】字符串操作函数你真的会用吗?
本文介绍了SQL中判断字符串是否包含子串的几种方法。`IN`函数判断元素是否完全等于给定元素组中的某项,而非包含关系。`INSTR`和`LOCATE`函数返回子串在字符串中首次出现的位置,用于检测是否存在子串。`SUBSTR`则用于提取字符串的子串。`LIKE`用于模糊匹配,常与通配符配合使用。注意`IN`并非用于判断子串包含。
|
4月前
|
SQL Java 程序员
Hive反射函数的使用-程序员是怎么学UDF函数的
Hive反射函数的使用-程序员是怎么学UDF函数的
33 0
|
4月前
|
SQL HIVE 数据格式
Hive高频函数(二)
Hive高频函数(二)
32 0
|
4月前
|
SQL HIVE
【Hive SQL 每日一题】统计用户连续下单的日期区间
该SQL代码用于统计用户连续下单的日期区间。首先按`user_id`和`order_date`分组并去除重复,然后使用`row_number()`标记行号,并通过`date_sub`与行号计算潜在的连续日期。接着按用户ID和计算后的日期分组,排除连续订单数少于2的情况,最后提取连续下单的起始和结束日期。输出结果展示了用户连续下单的日期范围。