unix_timestamp(timestamp=None, format=None)
Описание
Функция unix_timestamp()
преобразует временную метку или строку в Unix timestamp (количество секунд с 1970-01-01 00:00:00 UTC).
Параметры
timestamp
: Column (опционально) - столбец с временными метками или строкамиformat
: String (опционально) - формат даты и времени (если timestamp - строка)
Возвращаемое значение
Long - Unix timestamp в секундах
Пример использования
from pyspark.sql.functions import unix_timestamp
from pyspark.sql import SparkSession
from datetime import datetime
# Создаем SparkSession
spark = SparkSession.builder.appName("unix_timestamp_example").getOrCreate()
# Создаем DataFrame с временными метками и строками
data = [
(datetime(2023, 1, 15, 12, 30, 45), "2023-01-15 12:30:45"),
(datetime(2023, 1, 15, 0, 0, 0), "2023-01-15"),
(datetime(1970, 1, 1, 0, 0, 0), "1970-01-01")
]
df = spark.createDataFrame(data, ["timestamp", "date_str"])
# Преобразуем в Unix timestamp разными способами
result = df.select(
"timestamp",
"date_str",
unix_timestamp("timestamp").alias("from_timestamp"),
unix_timestamp("date_str").alias("from_str_default"),
unix_timestamp("date_str", "yyyy-MM-dd").alias("from_str_custom")
).show(truncate=False)
# Результат:
# +-------------------+-------------------+-------------+----------------+-------------+
# |timestamp |date_str |from_timestamp|from_str_default|from_str_custom|
# +-------------------+-------------------+-------------+----------------+-------------+
# |2023-01-15 12:30:45|2023-01-15 12:30:45|1673785845 |1673785845 |1673740800 |
# |2023-01-15 00:00:00|2023-01-15 |1673740800 |1673740800 |1673740800 |
# |1970-01-01 00:00:00|1970-01-01 |0 |0 |0 |
# +-------------------+-------------------+-------------+----------------+-------------+
Примечания
- NULL значения возвращают NULL
- Если параметры не указаны, возвращает текущий Unix timestamp
- Если timestamp - строка, необходимо указать соответствующий формат
- Для работы с временными метками также используйте:
from_unixtime()
для преобразования Unix timestamp в строкуto_timestamp()
для преобразования строки во временную меткуto_date()
для преобразования строки в датуdate_format()
для форматирования даты и времени