add_months(start_date, num_months)
Описание
Функция add_months()
добавляет указанное количество месяцев к дате.
Параметры
start_date
: Column - столбец с датамиnum_months
: Integer - количество месяцев для добавления (может быть отрицательным для вычитания)
Возвращаемое значение
Date - новая дата после добавления указанного количества месяцев
Пример использования
from pyspark.sql.functions import add_months
from pyspark.sql import SparkSession
from datetime import datetime
# Создаем SparkSession
spark = SparkSession.builder.appName("add_months_example").getOrCreate()
# Создаем DataFrame с датами
data = [
(datetime(2023, 1, 15),), # 15 января
(datetime(2023, 1, 31),), # 31 января
(datetime(2023, 12, 31),) # 31 декабря
]
df = spark.createDataFrame(data, ["date"])
# Добавляем месяцы к датам
result = df.select(
"date",
add_months("date", 1).alias("date_plus_1_month"),
add_months("date", -1).alias("date_minus_1_month")
).show(truncate=False)
# Результат:
# +-------------------+------------------+-------------------+
# |date |date_plus_1_month |date_minus_1_month |
# +-------------------+------------------+-------------------+
# |2023-01-15 00:00:00|2023-02-15 |2022-12-15 |
# |2023-01-31 00:00:00|2023-02-28 |2022-12-31 |
# |2023-12-31 00:00:00|2024-01-31 |2023-11-30 |
# +-------------------+------------------+-------------------+
Примечания
- NULL значения возвращают NULL
- Для вычитания месяцев используйте отрицательное значение параметра
num_months
- Функция учитывает количество дней в месяце:
- Если исходная дата - последний день месяца, результат также будет последним днем месяца
- Если в результирующем месяце меньше дней, чем в исходной дате, возвращается последний день месяца
- Для работы с датами также используйте:
date_add()
для добавления днейdate_sub()
для вычитания днейdatediff()
для вычисления разницы между датамиmonths_between()
для вычисления разницы в месяцахyear()
для извлечения годаmonth()
для извлечения месяцаday()
для извлечения дня