Impala 日期减去时间戳并得到等效天数的结果,而不管小时或年或天或秒的差异

Impala date subtraction timestamp and get the result in equivalent days irrespective of difference in hours or year or days or seconds

我想减去 impala 中的两个日期。我知道 impala 中有一个 datediff 函数但是如果有两个时间戳值如何处理它,比如考虑这种情况:

select to_date('2022-01-01 15-05-53','yyyy-mm-dd HH24-mi-ss')-to_date('2022-01-01 15-04-53','yyyy-mm-dd HH24-mi-ss') from dual;

有 1 分钟的差异,oracle 会将结果作为 0.000694444 天。

我的要求是 impala 中是否有任何这样的功能,我可以用 'yyyy-mm-dd HH24-mi-ss' 的方式减去两个时间戳值,并在 等价天数 无论天数、年数、小时数、分钟数或秒数是否存在差异。任何差异都应反映在等效的天数中。

我也可以通过任何其他方式实现同​​样的目标。

提前致谢。

您可以使用 unix_timestamp(timestamp) 将两个字段转换为 unixtime (int) 格式。这实际上是 1970-01-01 的秒数,非常适合以秒为单位计算日期时间差。一旦你有了 1970-01-01 的秒数,你就可以轻松地将它们减去以了解差异。 你的sql应该是这样的-

select 
unix_timestamp(to_timestamp('2022-01-01 15-06-53','yyyy-MM-dd HH-mm-ss'))  - 
unix_timestamp(to_timestamp('2022-01-01 15-05-53','yyyy-MM-dd HH-mm-ss')
) diff_in_seconds 

一旦你有秒数差异,你可以轻松地将它们转换为 minutes/hours/days - 无论你想要什么格式。