sql 日期转换函数

3,632次阅读
没有评论

经常需要查询半年以内或者指定时间范围内的数据,一般情况下数据库中保存的都是时间戳,时间戳实际上就是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

admin
版权声明:本站原创文章,由admin2017-05-22发表,共计2860字。
转载提示:除特殊说明外本站文章皆由CC-4.0协议发布,转载请注明出处。
评论(没有评论)