Pyspark 日期间隔和日期之间?

Pyspark date intervals and between dates?

在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)
    )
)