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