簡體   English   中英

如何在 sparksql 中獲取今天 -“1 天”的日期?

[英]How to get today -"1 day" date in sparksql?

如何在 sparksql 中獲取current_date - 1天,與 mysql 中的cur_date()-1相同。

算術函數允許您對包含日期的列執行算術運算。

例如,您可以計算兩個日期之間的差值、向日期添加天數或從日期中減去天數。 內置日期算術函數包括datediffdate_adddate_subadd_monthslast_daynext_daymonths_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

你可以試試

date_add(current_date(), -1)

我也不知道火花,但我在谷歌上找到了它。 您也可以使用此鏈接作為參考

您可以輕松地執行此任務,有許多與日期相關的方法,您可以在這里使用的是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|
+----------------------------------------------+

是的, date_sub()函數對這個問題來說是正確的,無論如何,選擇的答案有錯誤:

返回類型:時間戳

返回類型應該是date , date_sub() 函數將修剪時間戳的任何hh:mm:ss部分,並且只返回一個date

Spark SQL 也支持INTERVAL關鍵字。 您可以使用以下查詢獲取昨天的日期

SELECT current_date - INTERVAL 1 day;

有關更多詳細信息,請查看區間文字文檔 我用 spark 3.x 測試了上面的內容,但我不確定從哪個版本開始支持這種語法。

SELECT DATE_FORMAT(DATE_ADD(CURRENT_DATE(), -1), 'yyyy-MM-dd')

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM