概念
date_diff用于求两个日期间的差,三个参数
第一个参数:比如求差几天用day,差几个小时用hour
第二个参数:起始日期或者其实timestamp
第三个参数:结束日期或者结束timestamp
date_diff(unit, timestamp1, timestamp2) → bigint
Returns timestamp2 - timestamp1 expressed in terms of unit.
案例
如下,
from_unixtime
把
double
类型转为
timestamp
类型,然后利用
date_diff
函数求天数差
> select date_diff('day',from_unixtime(1610180252),from_unixtime(1611217052));
_col0
-------
12
求小时差
> select date_diff('hour',from_unixtime(1610180252),from_unixtime(1611217052));
_col0
-------
288
求分钟差
> select date_diff('minute',from_unixtime(1610180252),from_unixtime(1611217052));
_col0
-------
17280
或者可以如下
date_parse(string, format) → timestamp
Parses string into a timestamp using format.
> select date_diff('day',date_parse('2020-12-03', '%Y-%m-%d'),date_parse('2020-12-13', '%Y-%m-%d'));
_col0
-------
10
下面这种写法是不对的,presto识别不了
s> select date_diff('day',date_parse('2020-12-03', 'YYYY-mm-dd'),date_parse('2020-12-13', 'YYYY-mm-dd'));
Query 20210106_095222_00034_xaemj failed: Invalid format: "2020-12-03"
还可以用如下写法
> select date_diff('day',cast ('2020-12-03' as date),cast('2020-12-13' as date));
_col0
-------
10
总结
-
double
转
timestamp
,用
from_unixtime
-
string
转
timestamp
,用
date_parse
-
与
hive
是不一样的
版权声明:本文为u010711495原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。