在 Spark SQL 中,我找不到將日期添加到時間戳并接收時間戳的函式,我可以使用計算值來執行此操作。
這有效,但靜態
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)
uj5u.com熱心網友回復:
一種方法是將時間戳轉換為 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|
-------------------
uj5u.com熱心網友回復:
您可以使用concatSQL 函式構建一個表示間隔的字串,而不是直接使用間隔構造函式,然后將其轉換為使用castSQL 函式的間隔:
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 |
----------------------------------------------------------------------------------
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/319105.html
上一篇:Spark-使用堆外記憶體
