从 spark sql 的间隔中提取 HOUR

extracting HOUR from an interval in spark sql

我想知道如何正确提取给定的 2 个时间戳对象之间的小时数。

例如,当执行以下 SQL 查询时:

    select x, extract(HOUR FROM x) as result
    from
    (select (TIMESTAMP'2021-01-22T05:00:00' - TIMESTAMP'2021-01-01T09:00:00') as x)

result 的值为 20,而我希望它是 500

考虑到 x 值表示预期的 return 值,这对我来说似乎很奇怪。

任何人都可以向我解释我做错了什么,也许可以建议其他查询方式,以便获得所需的结果 return?

提前致谢!

我认为你必须用这个计算一下,因为 datediff 在 SparkSQL 中只支持天数。这对我有用:

SELECT (unix_timestamp(to_timestamp('2021-01-22T05:00:00') ) - unix_timestamp(to_timestamp('2021-01-01T09:00:00'))) / 60 / 60 diffInHours

我的结果(在 Synapse Notebook 中,而不是 Databricks,但我希望它是相同的):

unix_timestamp 函数将时间戳转换为 Unix 时间戳(以秒为单位),然后您可以对其应用日期数学。减去它们得到两个时间戳之间的秒数。两个日期之间的分钟数除以 60,两个日期之间的小时数再除以 60。