web-dev-qa-db-ja.com

今日の取得方法-sparksqlで「1日」の日付?

Mysqlのcur_date()-1と同じ、sparksqlでcurrent_date - 1 dayを取得する方法。

13
Vishan Rana

算術関数を使用すると、日付を含む列に対して算術演算を実行できます。

たとえば、2つの日付の差を計算したり、日付に日を追加したり、日付から日を引いたりできます。組み込みの日付算術関数には、datediffdate_adddate_subadd_monthslast_daynext_day、およびmonths_between

上記のうち必要なのは

date_sub(timestamp startdate、int days)、目的:TIMESTAMP値から指定された日数を引きます。最初の引数は、TIMESTAMPデータ型で説明されているように、認識された形式を使用する場合、自動的にTIMESTAMPにキャストされる文字列です。戻りタイプ:タイムスタンプ

そして私たちは持っています

current_timestamp()目的:now()関数のエイリアス。戻りタイプ:タイムスタンプ

あなたは選択することができます

date_sub(CAST(current_timestamp() as DATE), 1)

https://spark.Apache.org/docs/1.6.2/api/Java/org/Apache/spark/sql/functions.html を参照してください

15
Ram Ghadiyaram

あなたが試すことができます

date_add(current_date(), -1)

sparkもわかりませんが、Googleで見つけました。参照用にこれを使用することもできます link

5
TAYFUN CANAKCI

このタスクは簡単に実行できます。日付に関連する多くのメソッドがあり、ここで使用できるのはdate_sub

Spark-REPLの例:

 scala> spark.sql("select date_sub(current_timestamp(), 1)").show
+----------------------------------------------+
|date_sub(CAST(current_timestamp() AS DATE), 1)|
+----------------------------------------------+
|                                    2016-12-12|
+----------------------------------------------+
4
Shiv4nsh

はい、date_sub()関数は質問に対する権利です。とにかく、選択した回答にエラーがあります:

戻りタイプ:タイムスタンプ

戻り型はdateである必要があり、date_sub()関数はhh:mm:ssタイムスタンプの一部であり、dateのみを返します。

0
Kai