[英]How to get today -"1 day" date in sparksql?
如何在 sparksql 中獲取current_date - 1
天,與 mysql 中的cur_date()-1
相同。
算術函數允許您對包含日期的列執行算術運算。
例如,您可以計算兩個日期之間的差值、向日期添加天數或從日期中減去天數。 內置日期算術函數包括datediff
、 date_add
、 date_sub
、 add_months
、 last_day
、 next_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
您可以輕松地執行此任務,有許多與日期相關的方法,您可以在這里使用的是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.