1. 获取当前日期

current_date

hive 当前日期前一小时 hive中当前日期_时间戳

2. 获取当前时间

current_timestamp

hive 当前日期前一小时 hive中当前日期_当前日期_02

3. 按格式获取当前日期时间

from_unixtime(current_timestamp(),'yyyy-MM-dd HH:mm:ss') 
from_unixtime(current_timestamp(),'yyyy-MM-dd  HH') 
from_unixtime(current_timestamp(),'yyyyMMdd')

hive 当前日期前一小时 hive中当前日期_unix_03


hive 当前日期前一小时 hive中当前日期_hive_04


hive官方不推荐用了,可以用current_timestamp然后用substr()截取

substr(current_timestamp,1,10)
substr(current_timestamp,1,19)

hive 当前日期前一小时 hive中当前日期_大数据_05

4. 前后几个月

add_months(current_timestamp, -6)
add_months(current_timestamp, 6)

add_months(current_date, -6)
add_months(current_date, 6)

add_months('2020-12-01', -6)
add_months('2020-12-01', 6)

hive 当前日期前一小时 hive中当前日期_当前日期_06


hive 当前日期前一小时 hive中当前日期_hive_07


hive 当前日期前一小时 hive中当前日期_hive_08

5. 前后几天

date_add(current_date, 6)
date_sub(current_date, 6)

date_add(current_date, -6)
date_sub(current_date, -6)

hive 当前日期前一小时 hive中当前日期_大数据_09


hive 当前日期前一小时 hive中当前日期_时间戳_10

6. 计算天数差

datediff(start_time,end_time)

hive 当前日期前一小时 hive中当前日期_unix_11


datediff 在处理date格式 会有坑,会少一天

hive 当前日期前一小时 hive中当前日期_hive_12

7. 计算时间差

(unix_timestamp(start_time)-unix_timestamp(end_time))/3600

hive 当前日期前一小时 hive中当前日期_时间戳_13

8. 获取日期中的年月日、时分秒以及当前的周数

select year(current_timestamp);   ----返回日期中的年
select month(current_timestamp);  ----返回日期中的月
select day(current_timestamp);    ----返回日期中的日
select hour(current_timestamp);   ----返回日期中的时
select minute(current_timestamp); ----返回日期中的分
select second(current_timestamp); ----返回日期中的秒
select weekofyear(current_timestamp); ----返回日期在当前的周数

hive 当前日期前一小时 hive中当前日期_hive_14

9. 时间戳转为日期

输入的时间戳需要是整数,不能是字符串

select from_unixtime(1606989058,'yyyy-MM-dd HH:mm:ss') ; --秒级
select from_unixtime( cast(1606989066019/1000 as int),'yyyy-MM-dd HH:mm:ss') ;  --毫秒级

hive 当前日期前一小时 hive中当前日期_时间戳_15

10. 日期转为时间戳

必须是严格的‘yyyyMMdd HH:mm:ss’格式,转换后的是秒级的,不是毫秒级的

select unix_timestamp('2020-12-03 17:51:06');

hive 当前日期前一小时 hive中当前日期_hive_16

11. 根据日期获取星期几

pmod(datediff(current_timestamp, '1920-01-01') - 3, 7)

输出的结果为0-6的数,分别表示 日,一,二 … 六。

hive 当前日期前一小时 hive中当前日期_大数据_17

12. 当月第一天和当月最后一天

trunc(current_timestamp,'MM')   -- 当月第一天                                                           
last_day(current_timestamp)    -- 当月最后一天

hive 当前日期前一小时 hive中当前日期_当前日期_18

13. 当年第一天和当年最后一天

trunc(current_timestamp,'YY')                      -- 当年第一天                                                           
last_day(add_months(trunc(current_date,'YY'),11))  -- 当年最后一天

hive 当前日期前一小时 hive中当前日期_hive_19

14. 当前星期的下个星期几

next_day(current_timestamp, 'TU')

仅支持下面的格式,忽略大小写

中文

2

3

全称

星期一

MO

Mon

Monday

星期二

TU

Tue

Tuesday

星期三

WE

Wed

Wednesday

星期四

TH

Thu

Thursday

星期五

FR

Fri

Friday

星期六

SA

Sat

Saturday

星期天

SU

Sun

Sunday

hive 当前日期前一小时 hive中当前日期_unix_20

15. 获取当前日期所在的季度

ceil(month(current_date)/3)
lpad(ceil(month(current_date)/3),2,0)

hive 当前日期前一小时 hive中当前日期_当前日期_21