scala 如何获得今天--Spark中的“1天”日期?

xyhw6mcr  于 2022-11-09  发布在  Scala
关注(0)|答案(6)|浏览(151)

如何在SPEKSQL中获取current_date - 1天,与MySQL中的cur_date()-1相同。

yvgpqqbh

yvgpqqbh1#

算术函数允许您对包含日期的列执行算术运算。
例如,您可以计算两个日期之间的差值、向日期添加天数或从日期中减去天数。内置日期算术函数包括datediffdate_adddate_subadd_monthslast_daynext_daymonths_between
除此之外,我们需要的是
DATE_SUB(TIMESTAMP STARTDATE,INT DYS),用途:从时间戳值中减去指定的天数。第一个参数可以是字符串,如果它使用可识别的格式,则会自动转换为时间戳,如时间戳数据类型中所述。返回类型:返回开始前>天的日期
而且我们有
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

oxalkeyp

oxalkeyp2#

你可以试试

date_add(current_date(), -1)

我也不知道Spark,但我在谷歌上找到了。您也可以参考此link

0s0u357o

0s0u357o3#

您可以轻松地执行此任务,有许多与日期相关的方法,这里您可以使用的是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|
+----------------------------------------------+
wrrgggsh

wrrgggsh4#

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

SELECT current_date - INTERVAL 1 day;

有关更多详细信息,请查看间隔文字文档。我用Spark 3.x测试了上面的语法,但我不确定从哪个版本开始就支持这种语法。

t5zmwmid

t5zmwmid5#

是的,date_sub()函数是正确的,无论如何,选择的答案中有一个错误:
返回类型:时间戳
返回类型应该是date,DATE_SUB()函数将修剪时间戳的任何hh:mm:ss部分,并且只返回date

fhity93d

fhity93d6#

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

相关问题