该片文章为转载,整理了两篇博客,主要是方便我的查找,里面内容经过检验。
1.unix_timestamp()
返回当前时区的unix时间戳
返回类型:bigint
hive (tmp)> select unix_timestamp() from hive_sum limit 1;
1465875016
2.from_unixtime(bigint unixtime[,string format])
时间戳转日期函数
返回类型:string
hive (tmp)> select from_unixtime(unix_timestamp(),’yyyyMMdd’) from hive_sum limit 1;
20160614
3.unix_timestamp(string date)
返回指定日期格式的的时间戳
返回类型:bigint
注意:如果后面只有date参数,date的形式必须为’yyyy-MM-dd HH:mm:ss’的形式。
hive (tmp)> select unix_timestamp(‘2016-06-01’) from hive_sum limit 1;
NULL
hive (tmp)> select unix_timestamp(‘2016-06-01 00:00:00’) from hive_sum limit 1;
1464710400
4.unix_timestamp(string date,string pattern)
返回指定日期格式的时间戳
返回类型:bigint
hive (tmp)> select unix_timestamp(‘2016-06-01’,’yyyyMMdd’) from hive_sum limit 1;
1449331200
hive (tmp)> select unix_timestamp(‘2016-06-01’,’yyyy-MM-dd’) from hive_sum limit 1;
1464710400
5.to_date(string date)
返回时间字段中的日期部分
返回类型:string
hive (tmp)> select to_date(‘2016-06-01 00:00:00’) from hive_sum limit 1;
2016-06-01
6.year(string date)
返回时间字段中的年
返回类型:int
hive (tmp)> select year(‘2016-06-01 00:00:00’) from hive_sum limit 1;
2016
7.month(string date)
返回时间字段中的月
返回类型:int
hive (tmp)> select month(‘2016-06-01’) from hive_sum limit 1;
6
8.day(string date)
返回时间字段中的天
返回类型:int
hive (tmp)> select day(‘2016-06-01’) from hive_sum limit 1;
1
9.weekofyear(string date)
返回时间字段是本年的第多少周
返回类型:int
hive (tmp)> select weekofyear(‘2016-06-01’) from hive_sum limit 1;
22
10.datediff(string enddate,string begindate)
返回enddate与begindate之间的时间差的天数
返回类型:int
hive (tmp)> select datediff(‘2016-06-01’,’2016-05-01’) from hive_sum limit 1;
31
11.date_add(string date,int days)
返回date增加days天后的日期
返回类型:string
hive (tmp)> select date_add(‘2016-06-01’,15) from hive_sum limit 1;
2016-06-16
12.date_sub(string date,int days)
返回date减少days天后的日期
返回类型:string
hive (tmp)> select date_sub(‘2016-06-01’,15) from hive_sum limit 1;
2016-05-17
案例:
说明: 转换格式为"yyyy-MM-dd HH:mm:ss"的日期到 UNIX 时间戳。如果转化失败,则返回 0。
select
from_unixtime(1323308943),
from_unixtime(1323308943,‘yyyyMMdd’),
unix_timestamp(),
unix_timestamp(‘2017-12-07 16:01:03’),
unix_timestamp(‘20171207 16-01-03’,‘yyyyMMdd HH-mm-ss’)
from
order_detail limit 1;
±---------------------±----------±------------±------------±------------±-+
| _c0 | _c1 | _c2 | _c3 | _c4 |
±---------------------±----------±------------±------------±------------±-+
| 2011-12-08 09:49:03 | 20111208 | 1489029488 | 1512633663 | 1512633663 |
±---------------------±----------±------------±------------±------------±-+
select
to_date(‘2016-12-08 10:03:01’),
year(‘2016-12-08 10:03:01’),
month(‘2016-12-08’),
day(‘2016-12-08 10:03:01’),
hour(‘2016-12-08 10:03:01’),
minute(‘2016-12-08 10:03:01’),
second(‘2016-12-08 10:03:01’)
from
order_detail limit 1;
±------------±------±-----±-----±-----±-----±-----±-+
| _c0 | _c1 | _c2 | _c3 | _c4 | _c5 | _c6 |
±------------±------±-----±-----±-----±-----±-----±-+
| 2016-12-08 | 2016 | 12 | 8 | 10 | 3 | 1 |
±------------±------±-----±-----±-----±-----±-----±-+
select
weekofyear(‘2016-12-08 10:03:01’),
datediff(‘2016-12-08’,‘2016-11-27’)
from order_detail limit 1;
±-----±-----±-+
| _c0 | _c1 |
±-----±-----±-+
| 49 | 11 |
±-----±-----±-+
select date_add(‘2016-12-08’,10),date_add(‘2016-12-08’,-10),
date_sub(‘2016-12-08’,-10),date_sub(‘2016-12-08’,10) from order_detail limit 1;
±------------±------------±------------±------------±-+
| _c0 | _c1 | _c2 | _c3 |
±------------±------------±------------±------------±-+
| 2016-12-18 | 2016-11-28 | 2016-12-18 | 2016-11-28 |
±------------±------------±------------±------------±-+
select
date_add(‘20161208’,10),
from_unixtime(unix_timestamp(date_add(‘2016-12-08’,10)),‘yyyyMMdd’),
from_unixtime(unix_timestamp(date_add(‘2016-12-08’,10),‘yyyy-MM-dd’),‘yyyyMMdd’)
from order_detail limit 1;
±------±------±----------±-+
| _c0 | _c1 | _c2 |
±------±------±----------±-+
| NULL | NULL | 20161218 |
±------±------±----------±-+