#date #apache-spark #datetime #pyspark #apache-spark-sql
#Дата #apache-spark #дата и время #pyspark #apache-spark-sql
Вопрос:
В настоящее время у меня есть:
last3years_dates = ('2020-01-01 08:56:00', '2020-10-29 09:18:00')
df_NIRS = df_NIRS.where(F.col('RaisedDate').between(*last3years_dates))
‘2020-01-01 08:56:00’ и ‘2020-10-29 09:18:00’ являются заполнителями. Как можно отфильтровать данные с начала этого года, то есть «2020-01-01 00:00:00» до 3 предыдущих лет «2017-01-01 00:00:00» без их жесткого кодирования. Возможно, использовать current_timestamp()
?
Ответ №1:
df.filter(
F.col('RaisedDate').between(
F.to_date(
(F.year(F.current_timestamp()) - F.lit(3)).cast('string'), 'yyyy'
),
F.to_date(
F.year(F.current_timestamp()).cast('string'), 'yyyy'
)
)
)
Ответ №2:
Попробуйте использовать приведенный ниже код.
df
.filter("dtCol between (current_timestamp - INTERVAL 3 YEARS) AND date_trunc('Year',current_timestamp)")
.show()