Python 如何在运行pyspark sql时使用声明的日期变量?

Python 如何在运行pyspark sql时使用声明的日期变量?,python,pyspark-sql,Python,Pyspark Sql,我试图通过声明我的日期变量并在查询本身中使用这些变量来运行pyspark查询。但是,输出不反映日期过滤器。我的现有代码如下 strt_dt = "'2018-01-01'" end_dt = "'2019-12-31'" df = sqlc.sql('Select * from tbl where dt > {0} and dt < {1}'.format(strt_dt,end_dt)) strt_dt=“'2018-01-01'” end_dt=“'2019-12-31

我试图通过声明我的日期变量并在查询本身中使用这些变量来运行pyspark查询。但是,输出不反映日期过滤器。我的现有代码如下

strt_dt = "'2018-01-01'"
 end_dt = "'2019-12-31'"


 df = sqlc.sql('Select * from tbl where dt > {0} and dt < {1}'.format(strt_dt,end_dt))
strt_dt=“'2018-01-01'”
end_dt=“'2019-12-31'”
df=sqlc.sql('Select*fromtbl其中dt>{0}和dt<{1}'。格式(strt_dt,end_dt))
当我检查上述df的最大值(dt)时,它大于2019-12-31,根据代码,这不应该是这种情况。我可以使用下面的代码(来源于

strt_dt='2018-01-01'
end_dt='2019-12-31'
df=sqlc.sql('Select*fromtbl')
测向滤波器((col('dt')>=F.lit(strt_dt))&(col('dt')
我想避免对spark df进行过滤,因为我不想用所有数据创建df。请让我知道我在第一组代码中做错了什么

PS:当我在第一块代码中声明除日期数据类型以外的变量时,该变量适用于该列名。也就是说,这是特定于在配置单元表中存储为字符串的日期数据类型


提前感谢

您的Spark'dt'列类型是日期吗?如果是,您需要对声明的日期字符串使用强制转换。尝试使用SQL强制转换到日期。顺便说一句,显示df.printSchema()可能有用结果是您的问题。@furkanayd my pyspark查询的源/输入“tbl”是一个配置单元表,所有数据类型都是字符串,包括日期字段。Spark“dt”列类型是日期吗?如果是,您需要对声明的日期字符串使用强制转换。尝试使用SQL强制转换到日期。顺便说一句,显示df.printSchema()可能会有用结果是您的问题。@furkanayd my pyspark查询的源/输入“tbl”是一个配置单元表,所有数据类型均为字符串,包括日期字段
 strt_dt = '2018-01-01'
 end_dt = '2019-12-31' 
 df = sqlc.sql('Select * from tbl')  
 df.filter((col('dt') >= F.lit(strt_dt)) & (col('dt') < F.lit(end_dt)))