共计 2860 个字符,预计需要花费 8 分钟才能阅读完成。
经常需要查询半年以内或者指定时间范围内的数据,一般情况下数据库中保存的都是时间戳,时间戳实际上就是unix时间,我们可以在正常的日期时间来回转换
函数 |
格式 |
返回值 |
说明 |
from_unixtime |
from_unixtime(bigint unixtime[, string format]) |
string |
转化UNIX时间戳(从1970-01-01 00:00:00 UTC到指定时间的秒数)到当前时区的时间格式 |
hive (temp)> select from_unixtime(1323308943,'yyyyMMdd') from dual;
20111208
hive (temp)> select from_unixtime(1323308943,'yyyy-MM-dd') from dual;
2011-12-08
函数 |
格式 |
返回值 |
说明 |
unix_timestamp |
unix_timestamp() |
bigint |
获得当前时区的UNIX时间戳 |
hive (temp)> select unix_timestamp() from dual;
1472105939
函数 |
格式 |
返回值 |
说明 |
unix_timestamp |
unix_timestamp(string date) |
bigint |
转换格式为”yyyy-MM-dd HH:mm:ss”的日期到UNIX时间戳。转化失败,则返回0 |
hive (temp)> select unix_timestamp('2016-08-25 13:02:03') from dual;
1472101323
函数 |
格式 |
返回值 |
说明 |
unix_timestamp |
unix_timestamp(string date, string pattern) |
bigint |
转换格式为”yyyyMMdd HH:mm:ss”的日期到UNIX时间戳。转化失败,则返回0 |
hive (temp)> select unix_timestamp('20160825 13:02:03','yyyyMMdd HH:mm:ss') from dual
1472101323
函数 |
格式 |
返回值 |
说明 |
to_date |
to_date(string timestamp) |
string |
返回日期时间字段中的日期部分 |
hive (temp)> select to_date('2016-12-08 10:03:01') from dual;
2016-12-08
函数 |
格式 |
返回值 |
说明 |
year |
year(string date) |
int |
返回日期中的年 |
hive (temp)> select year('2016-12-08 10:03:01') from dual;
2016
hive (temp)> select year('2016-12-08') from dual;
2016
函数 |
格式 |
返回值 |
说明 |
month |
month(string date) |
int |
返回日期中的月份 |
hive (temp)> select month('2016-12-08 10:03:01') from dual;
12
hive (temp)> select month('2016-11-08') from dual;
11
函数 |
格式 |
返回值 |
说明 |
day |
day(string date) |
int |
返回日期中的天 |
hive (temp)> select day('2016-12-08 10:03:01') from dual;
8
hive (temp)> select day('2016-11-18') from dual;
18
函数 |
格式 |
返回值 |
说明 |
hour |
hour(string date) |
int |
返回日期中的小时 |
hive (temp)> select hour('2016-12-08 10:03:01') from dual;
10
函数 |
格式 |
返回值 |
说明 |
minute |
minute(string date) |
int |
返回日期中的分钟 |
hive (temp)> select minute('2016-12-08 10:03:01') from dual;
3
函数 |
格式 |
返回值 |
说明 |
second |
second(string date) |
int |
返回日期中的秒 |
hive (temp)> select second('2016-12-08 10:03:01') from dual;
1
函数 |
格式 |
返回值 |
说明 |
weekofyear |
weekofyear(string date) |
int |
返回日期在当前的周数 |
hive (temp)> select weekofyear('2016-12-08 10:03:01') from dual;
49
函数 |
格式 |
返回值 |
说明 |
datediff |
datediff(string enddate, string startdate) |
int |
返回结束日期减去开始日期的天数 |
hive (temp)> select datediff('2016-12-08','2016-12-02') from dual;
6
函数 |
格式 |
返回值 |
说明 |
date_add |
date_add(string startdate, int days) |
string |
返回开始日期startdate增加days天后的日期 |
hive (temp)> select date_add('2016-12-08',10) from dual;
2016-12-18
#当前日期为2016-08-25,在此基础上加7天
hive (temp)> select date_add(from_unixtime(unix_timestamp(),'yyyy-MM-dd'),7) from dual;
2016-09-01
函数 |
格式 |
返回值 |
说明 |
date_sub |
date_sub(string startdate, int days) |
string |
返回开始日期startdate减少days天后的日期 |
hive (temp)> select date_sub('2016-12-08',10) from dual;
2016-11-28
#当前日期为2016-08-25,在此基础上减7天
hive (temp)> select date_sub(from_unixtime(unix_timestamp(),'yyyy-MM-dd'),7) from dual;
2016-08-18
转载自http://www.jianshu.com/p/e30395941f9c