Hive中日期函数总结
(2019-11-12 15:56:26)
标签:
hive日期函数hive时间戳函数hive日期提取处理 |
分类: Hadoop大数据学习 |
一、时间戳函数
-- 日期转时间戳:从1970-01-01 00:00:00 UTC到指定时间的秒数
select unix_timestamp(); -- 查询当前时间的时间戳,返回:1573453747
select unix_timestamp('2019-11-11 14:22:32'); -- 查询指定时间的时间戳,返回:1573453352 (若转换失败返回0)
select unix_timestamp('2019-11-11 14:22:32','yyyy-MM-dd HH:mm:ss'); -- 转换指定格式时间的时间戳,返回:1573453352
select unix_timestamp('20191111 14:22:31','yyyyMMdd HH:mm:ss'); -- 转换指定格式时间的时间戳,返回:1573453352
-- 时间戳转日期
select from_unixtime(1573453352);-- 查询指定时间戳的时间,默认格式yyyy-MM-dd HH:mm:ss,返回:2019-11-11 14:22:32
select from_unixtime(1573453352,'yyyyMMdd');-- 查询指定时间戳的时间,转换成指定格式,返回:20191111
select from_unixtime(1573453352,'yyyy-MM-dd HH:mm:ss');-- 查询指定时间戳的时间,转换成指定格式,返回:2019-11-11 14:22:32
select from_unixtime(unix_timestamp(),'yyyy-MM-dd HH:mm:ss');-- 查询系统当前时间戳的时间,转换成指定格式,返回:2019-11-11 15:55:22
二、获取当前日期
2.1、取得当前日期
select current_date();
2.2、取得当前日期时间
select current_timestamp();
2.3、取得当前时间
select from_unixtime(unix_timestamp(),'yyyy-MM-dd HH:mm:ss');
三、日期时间转日期:to_date(string timestamp)
select to_date(‘2019-11-11 11:12:00’);
四、获取日期中的年/月/日/时/分/秒/周
with dtime as(select from_unixtime(unix_timestamp(),'yyyy-MM-dd HH:mm:ss') as dt)
select year(dt),month(dt),day(dt),hour(dt),minute(dt),second(dt),weekofyear(dt)
from dtime;
五、计算两个日期之间的天数: datediff
select datediff('2019-11-11','2019-11-01');
六、日期增加和减少: date_add/date_sub(string startdate,int days)
select date_add('2019-11-11',1);
select date_sub('2019-11-11',1);
七、其他日期函数
查询当前系统时间(包括毫秒数): current_timestamp;
查询当月第几天: dayofmonth(current_date);
月末: last_day(current_date)
当月第1天: date_sub(current_date,dayofmonth(current_date)-1)
下个月第1天: add_months(date_sub(current_date,dayofmonth(current_date)-1),1)
日期、时间戳、字符串类型格式化输出标准时间格式:
select date_format(current_timestamp(),'yyyy-MM-dd HH:mm:ss');
select date_format(current_date(),'yyyyMMdd');
select date_format('2017-01-01','yyyy-MM-dd HH:mm:ss'); --字符串必须满足yyyy-MM-dd格式
本文参考资料:https://www.cnblogs.com/fujian-code/p/9796233.html
https://www.jianshu.com/p/da852e822473
-- 日期转时间戳:从1970-01-01 00:00:00 UTC到指定时间的秒数
select unix_timestamp(); -- 查询当前时间的时间戳,返回:1573453747
select unix_timestamp('2019-11-11 14:22:32'); -- 查询指定时间的时间戳,返回:1573453352 (若转换失败返回0)
select unix_timestamp('2019-11-11 14:22:32','yyyy-MM-dd HH:mm:ss');
select unix_timestamp('20191111 14:22:31','yyyyMMdd HH:mm:ss'); -- 转换指定格式时间的时间戳,返回:1573453352
-- 时间戳转日期
select from_unixtime(1573453352);-- 查询指定时间戳的时间,默认格式yyyy-MM-dd HH:mm:ss,返回:2019-11-11 14:22:32
select from_unixtime(1573453352,'yyyyMMdd');-- 查询指定时间戳的时间,转换成指定格式,返回:20191111
select from_unixtime(1573453352,'yyyy-MM-dd HH:mm:ss');-- 查询指定时间戳的时间,转换成指定格式,返回:2019-11-11 14:22:32
select from_unixtime(unix_timestamp(),'yyyy-MM-dd HH:mm:ss');-- 查询系统当前时间戳的时间,转换成指定格式,返回:2019-11-11 15:55:22
二、获取当前日期
2.1、取得当前日期
select current_date();
2.2、取得当前日期时间
select current_timestamp();
2.3、取得当前时间
select from_unixtime(unix_timestamp(),'yyyy-MM-dd HH:mm:ss');
三、日期时间转日期:to_date(string timestamp)
select to_date(‘2019-11-11 11:12:00’);
四、获取日期中的年/月/日/时/分/秒/周
with dtime as(select from_unixtime(unix_timestamp(),'yyyy-MM-dd HH:mm:ss') as dt)
select year(dt),month(dt),day(dt),hour(dt),minute(dt),second(dt),weekofyear(dt)
from dtime;
五、计算两个日期之间的天数: datediff
select datediff('2019-11-11','2019-11-01');
六、日期增加和减少: date_add/date_sub(string startdate,int days)
select date_add('2019-11-11',1);
select date_sub('2019-11-11',1);
七、其他日期函数
查询当前系统时间(包括毫秒数): current_timestamp;
查询当月第几天: dayofmonth(current_date);
月末: last_day(current_date)
当月第1天: date_sub(current_date,dayofmonth(current_date)-1)
下个月第1天: add_months(date_sub(current_date,dayofmonth(current_date)-1),1)
日期、时间戳、字符串类型格式化输出标准时间格式:
select date_format(current_timestamp(),'yyyy-MM-dd HH:mm:ss');
select date_format(current_date(),'yyyyMMdd');
select date_format('2017-01-01','yyyy-MM-dd HH:mm:ss'); --字符串必须满足yyyy-MM-dd格式
本文参考资料:https://www.cnblogs.com/fujian-code/p/9796233.html
https://www.jianshu.com/p/da852e822473

加载中…