我有以下使用sql
的代码:
val yesterdayDate = "2018-03-13"
df.createOrReplaceTempView("myTable")
val result = spark.sql("select * from myTable where date(field_date) = '" + yesterdayDate)
field_date
的值具有以下格式2018-02-13 23:55:11.382928
。
我想使用 Spark 的filter
或where
获得相同的结果。
以下SQL查询应该适合您
val yesterdayDate = "2018-03-13"
df.createOrReplaceTempView("myTable")
val result = spark.sql(s"select * from myTable where date(field_date) == '${yesterdayDate}'")
result.show(false)
如果你不想使用sql查询,那么你可以使用sql api,如下所示
val yesterdayDate = "2018-03-13"
import org.apache.spark.sql.functions._
df.select("*").where(date_format(col("field_date"), "yyyy-MM-dd") === yesterdayDate).show(false)
你想说,在 Spark sql API 中吗?
如果是,你可以做
import spark.implicits._
val yesterdayDate = "2018-03-13"
val df = spark.read // read the source
val result = df.select("*").where($"field_date" === s"$yesterdayDate")
我不得不在这里编辑评论。
df.select("*").where(functions.date_format($"field_date".cast(DateType), "yyyy-MM-dd") === s"$yesterdayDate")