Время есть величайшая иллюзия. Оно есть только внутренняя призма, через которую мы разлагаем бытие и жизнь (А.Ф. Амиель).
Рассмотрим способы преобразования колонок с датой и временем в Spark SQL. Для начала сформируем демонстрационный датафрейм и зарегистрируем его в качестве временной таблицы:
str2date
Функция to_date принимает в качестве параметров имя колонки и формат и преобразует в тип pyspark.sql.types.DateType:
Функция to_timestamp работает аналогично, только возвращает дату и время (pyspark.sql.types.TimestampType):
Описание символов формата можно взять здесь.
date2str
Функция date_format принимает колонку с типом даты или даты и времени, а также формат вывода и возвращает строковое поле:
date2unix
unix_timestamp принимает в качестве параметров дату и время/дату или строку в заданном формате (задается вторым параметром) и возвращает в количество секунд, прошедших с 1970-01-01 00:00:00. Ниже пример для нашего датафрейма:
А здесь пример работы unix_timestamp с метками даты и времени на подзапросе с полями с заданными типом:
unix2date
from_unixtime осуществляет обратное преобразование - количества секунд в метки даты и времени:
Дополнительно о работе функций можно почитать здесь.