pyspark sql - 将一个月的第一天与字符串进行比较
pyspark sql - compare first day of month with string
我在数据帧 firstday
中有一列,采用时间戳格式,看起来像这样 2022-03-01 00:00:00
我正在尝试 run_date
在 运行 传递一个字符串参数时间作为过滤器。但是下面的 sql 不起作用。你如何做到这一点?非常感谢!
尝试将看起来像 2022-03-28
的 run_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|
+---+----------+
我在数据帧 firstday
中有一列,采用时间戳格式,看起来像这样 2022-03-01 00:00:00
我正在尝试 run_date
在 运行 传递一个字符串参数时间作为过滤器。但是下面的 sql 不起作用。你如何做到这一点?非常感谢!
尝试将看起来像 2022-03-28
的 run_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|
+---+----------+