pyspark sql - 将一个月的第一天与字符串进行比较

pyspark sql - compare first day of month with string

我在数据帧 firstday 中有一列,采用时间戳格式,看起来像这样 2022-03-01 00:00:00 我正在尝试 run_date 在 运行 传递一个字符串参数时间作为过滤器。但是下面的 sql 不起作用。你如何做到这一点?非常感谢!

尝试将看起来像 2022-03-28run_date 转换为该月的第一天,并用它与 firstday

进行比较
spark.sql("select * from df where firstday = date_trunc('mon','{}')".format(run_date))

差不多了,格式问题很少

原始 df

    +---+----------+
    | id|  firstday|
    +---+----------+
    |  1|2022-03-01|
    |  2|2022-03-17|
    +---+----------+

应用过滤器

run_date="'2022-03-21'"
filtereddf=spark.sql(("select * from df where firstday ==date_trunc('mon',{})").format(run_date))
filtereddf.show()

run_date="2022-03-21"
filtereddf=spark.sql(("select * from df where firstday ==date_trunc('mon','{}')").format(run_date))
filtereddf.show()

+---+----------+
| id|  firstday|
+---+----------+
|  1|2022-03-01|
+---+----------+