Pyspark日期间隔和日期之间



在Snowflake/SQL中,我们可以做:

SELECT * FROM myTbl 
WHERE date_col 
BETWEEN 
CONVERT_TIMEZONE('UTC','America/Los_Angeles', some_date_string_col)::DATE - INTERVAL '7 DAY'
AND 
CONVERT_TIMEZONE('UTC','America/Los_Angeles', some_date_string_col)::DATE - INTERVAL '1 DAY'

对于数据帧,是否有pyspark翻译

我想如果像这样的

myDf.filter(
col(date_col) >= to_utc_timestamp(...)
)

但是我们怎么能做BETWEENinterval呢?

您可以在SQL表达式中使用INTERVAL,如下所示:

df1 = df.filter(
F.col("date_col").between(
F.expr("current_timestamp - interval 7 days"),
F.expr("current_timestamp - interval 1 days"),
)
)

但是,如果只使用天数进行筛选,则可以简单地使用date_add(或date_sub(函数:

from pyspark.sql import functions as F
df1 = df.filter(
F.col("date_col").between(
F.date_add(F.current_date(), -7),
F.date_add(F.current_date(), -1)
)
)

最新更新