【发布时间】:2021-11-15 01:28:24
【问题描述】:
我想获取 SparkSQL 中两个日期时间之间的 整数 天差,但它忽略了时间部分并返回与预期不同的结果。
例如,下面的查询返回 9,但我期望的是 8:
SELECT DATEDIFF(CAST('2021-07-10 02:26:16' AS TIMESTAMP), CAST('2021-07-01 19:10:28' AS TIMESTAMP))
我可以通过将 datetime 转换为 long 来达到预期的结果,因此我可以得到它们之间的秒差并将结果转换为天,转换为整数,例如:
SELECT CAST((CAST(CAST('2021-07-10 02:26:16' AS TIMESTAMP) AS LONG) - CAST(CAST('2021-07-01 19:10:28' AS TIMESTAMP) AS LONG))/(60*60*24) AS INTEGER)
我想知道是否有“更推荐的方式”来做到这一点,比如使用一些内置的 SparkSQL 函数。
提前致谢。
【问题讨论】:
标签: date datetime apache-spark-sql datediff