sql 计算两个日期差几天

有段时间没写sql,正好今天要处理个比较复杂的业务问题,需要写sql,里面碰到几个小点,还有点记得不是太清楚,稍微想了一阵才写出来,特此记录,方便后续查询。

其中有一个环节,需要计算两个日期差几天,经过一番思考,可以按如下方式进行计算。

1.unix_timestamp 字符串转时间戳

首先用unix_timestamp方法,将字符串转成时间戳。

select unix_timestamp('20221020', 'yyyyMMdd') from xxx limit 1;

输出结果为

1666195200

2.from_unixtime 时间戳转指定格式日期字符串

接下来我们使用from_unixtime方法将时间戳转成指定格式的日期字符串

select from_unixtime(unix_timestamp('20221020', 'yyyyMMdd'), 'yyyy-MM-dd') from xxx limit 1;

输出结果为

2022-10-20

3.to_date转成日期

select to_date(from_unixtime(unix_timestamp('20221020', 'yyyyMMdd'), 'yyyy-MM-dd')) from xxx limit 1;

输出结果为

2022-10-20

4.datediff方法求两个日期差几天

最后,我们使用datediff方法,可以求出两个日期差几天。

select datediff(to_date(from_unixtime(unix_timestamp('20221020', 'yyyyMMdd'), 'yyyy-MM-dd')),  to_date(from_unixtime(unix_timestamp('20220920', 'yyyyMMdd'), 'yyyy-MM-dd'))) from xxx limit 1;

输出结果为

30

你可能感兴趣的:(spark,sql,sparksql,计算两天差)