在Spark中,我找不到将天数添加到时间戳并接收回时间戳的函数,因此我可以使用计算值来这样做。
这是可行的,但是静态
SELECT col1 + interval 2 days FROM
VALUES make_timestamp(2021, 12, 28, 6, 30, 45.887)
我需要一个我可以计算的。这不起作用(我也不能用列值填充它):
SELECT col1 + interval (5-3) days
FROM VALUES make_timestamp(2021, 12, 28, 6, 30, 45.887)
这也是不好的(因为它返回日期):
SELECT date_add(col1,1) FROM
VALUES make_timestamp(2021, 12, 28, 6, 30, 45.887)
发布于 2021-10-16 10:24:37
与直接使用区间构造函数不同,您可以用concat
SQL function构建表示间隔的字符串,然后使用cast
SQL function将其转换为间隔。
SELECT col1 + cast(concat(5-3, ' days') as interval)
FROM VALUES make_timestamp(2021, 12, 28, 6, 30, 45.887)
返回以下结果:
+----------------------------------------------------------------------------------+
|CAST(col1 + CAST(concat(CAST((5 - 3) AS STRING), days) AS INTERVAL) AS TIMESTAMP)|
+----------------------------------------------------------------------------------+
|2021-12-30 06:30:45.887 |
+----------------------------------------------------------------------------------+
发布于 2021-10-15 14:11:57
一种方法是将时间戳转换为unix时间,并添加所需的秒数。
scala> spark.sql("select from_unixtime(unix_timestamp('2021-10-15 10:11:12') + 10 * 24*60*60) plus10days").show(false)
+-------------------+
|plus10days |
+-------------------+
|2021-10-25 10:11:12|
+-------------------+
https://stackoverflow.com/questions/69584800
复制相似问题