HIve时间函数

HIve时间函数

 

1、hive取得当前日期时间:

1.1) 取得当前日期:

select current_date();

1.2) 取得当前日期时间:

select current_timestamp();

1.3) hive取得当前时间戳:

select unix_timestamp();

1.4) 时间戳转日期:

select from_unixtime(1517725479,‘yyyy-MM-dd HH:dd:ss’);

1.5) 日期转unix时间戳:

select to_nuix_timestamp(‘2020-11-11 12:12:12’,‘yyyy-MM-dd HH:dd:ss’);

1.6) hive取得当前时间:

select from_unixtime(unix_timestamp(),‘yyyy-MM-dd HH:dd:ss’);

2、hive自动计算其他日期(昨天,今天):

hive中日期加/减函数:date_add(start_date,num_days)/date_sub(start_date,num_days)

2.1) 取得昨天日期:

select date_add(from_unixtime(unix_timestamp(),‘yyyy-MM-dd’),-1);

select date_sub(from_unixtime(unix_timestamp(),‘yyyy-MM-dd’),1);

2.2) 取得明天日期:

select date_add(from_unixtime(unix_timestamp(),‘yyyy-MM-dd’),1);

select date_sub(from_unixtime(unix_timestamp(),‘yyyy-MM-dd’),-1);

select next_day(from_unixtime(unix_timestamp(),‘yyyy-MM-dd’),'MO');

2.4)返回当月最后一天

select last_day(from_unixtime(unix_timestamp(),‘yyyy-MM-dd’)); 

3、hive取得两个日期之间差值(差值为天数):

datediff(date1,date2):date1大于date2,返回值为正,否则,返回值为负。

select datediff(from_unixtime(unix_timestamp(),‘yyyy-MM-dd’),date_add(from_unixtime(unix_timestamp(),‘yyyy-MM-dd’),-10));

select datediff(from_unixtime(unix_timestamp(),‘yyyy-MM-dd’),date_add(from_unixtime(unix_timestamp(),‘yyyy-MM-dd’),10));

4、字符串转时间(字符串必须为:yyyy-MM-dd格式)

返回日期:
select to_date(‘2020-12-08 12:12:12’); --2020-11-11 

返回年份:
select year('2020-12-08 10:03:01');--2020
select year('2020-12-08');--2020

返回月份:
select month('2020-12-08 10:03:01');--12
select month('2020-12-08');--12

返回几号:
select day('2020-12-08 10:03:01');--8
select day('2020-12-08');--8

返回小时:
select hour('2020-12-08 10:03:01');--10

返回分钟:
select minute('2020-12-08 10:03:01');--3

返回秒:
select second('2020-12-08 10:03:01');--1

返回当前日期是该年的第几周:
select weekofyear('2020-12-08 10:03:01')--50

返回星期几:pmod(datediff('#date#', 'XXXX年任意一个星期日的日期'), 7)
pmod(datediff('#date#', '2021-04-25'), 7)  返回值:int
       说明:1、返回值为“0-6”(“0-6”分别表示“星期日-星期六”);
                  2、需要注意pmod和 datediff 函数的使用方法.
                  3、如果想让周一到周六对应数字1-7:
                         1)将查询出来的数据进行条件判断,如下:
                                IF(pmod(datediff('2021-05-09', '2021-04-25'), 7)='0', 7, pmod(datediff('2021-05-09', '2021-04-25'), 7))
                         2)8-pmod(datediff(next_day('yyyy-MM-dd','MO'), 'XXXX年任意一个星期日的日期'), 7)

示例:select pmod(datediff('2021-05-09', '2021-04-25'), 7),8-pmod(datediff(next_day('2021-05-09','MO'), '2021-04-25'), 7);      =>     0,1

5、日期、时间戳、字符串类型格式化输出标准时间格式:

select date_format(current_timestamp(),‘yyyy-MM-dd HH:mm:ss’);

select date_format(current_date(),‘yyyy-MM-dd’);

select date_format(‘2020-11-11’,‘yyyy-MM-dd HH:mm:ss’); --字符串必须满足yyyy-MM-dd格式

6、utc时间转换:

select from_utc_timestamp(current_timestamp(),8);

select to_utc_timestamp(current_timestamp(),8);

你可能感兴趣的:(HIVE,MySQL)