web-dev-qa-db-ja.com

SPARK SQlのDATEDIFF

私はSpark SQLです。SQLサーバーからDatabricksにデータを移行しています。SPARK SQLです。 in SPARK以下の日付関数のsql。datediffは、spark sql。

DATEDIFF(YEAR、StartDate、EndDate)DATEDIFF(Month、StartDate、EndDate)DATEDIFF(Quarter、StartDate、EndDate)

9
SQLGirl

前述したように、SparkSQLはDATEDIFFをサポートしますが、数日間のみです。また、パラメータがSparkの逆の方法であるように見えるため、注意が必要です。

--SQL Server
DATEDIFF ( datepart , startdate , enddate )

--Spark
DATEDIFF ( enddate , startdate )

ただし、Sparkはmonths_betweenの代わりに使用できるDATEDIFF( month ...という同様の関数をサポートしています。この関数は小数も返すので、オプションでINTにキャストして、

SELECT startDate, endDate, 
  DATEDIFF( endDate, startDate ) AS diff_days,
  CAST( months_between( endDate, startDate ) AS INT ) AS diff_months      
FROM yourTable
ORDER BY 1;

日付の年と四半期をそれぞれ決定するyearquarter関数もあります。単に年を差し引くこともできますが、四半期はもっと注意が必要です。 「数学を行う」か、カレンダーテーブルを使用する必要があるかもしれません。

7
wBob