如何获得今天 - sparksql中的"1天"日期?

Vis*_*ana 13 python java scala apache-spark apache-spark-sql

如何current_date - 1在sparksql中获得一天,就像cur_date()-1在mysql中一样.

Ram*_*ram 16

算术函数允许您对包含日期的列执行算术运算.

例如,您可以计算两个日期之间的差异,将日期添加到日期或从日期中减去天数.内置的日期计算功能包括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)
Run Code Online (Sandbox Code Playgroud)

请参阅https://spark.apache.org/docs/1.6.2/api/java/org/apache/spark/sql/functions.html


小智 8

你可以试试

date_add(current_date(), -1)
Run Code Online (Sandbox Code Playgroud)

我也不知道火花,但我在Google上找到了。您也可以使用此链接作为参考


bot*_*que 7

Spark SQL 还支持INTERVAL关键字。您可以使用以下查询获取昨天的日期:

SELECT current_date - INTERVAL 1 day;
Run Code Online (Sandbox Code Playgroud)

有关更多详细信息,请参阅间隔文字文档。我使用 Spark 3.x 测试了上述内容,但我不确定从哪个版本开始支持此语法。


Shi*_*nsh 5

您可以轻松地执行此任务,有许多与日期有关的方法,您可以在此处使用 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|
+----------------------------------------------+
Run Code Online (Sandbox Code Playgroud)