从 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。
我想知道如何正确提取给定的 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。