注: 以下の翻訳の正確性は検証されていません。AIPを利用して英語版の原文から機械的に翻訳されたものです。
F.date_add(start, days)F.date_sub(start, days)F.add_months(start, months)F.datediff(end, start)F.months_between(date1, date2)F.last_day(date)F.next_day(date, dayOfWeek)F.year(column)F.month(column)F.dayofmonth(column)F.hour(column)F.minute(column)F.second(column)F.quarter(column)F.dayofyear(column)F.weekofyear(column)簡単な早見表を以下に示します。
| 書式 | 例 |
|---|---|
| yyyy-MM-dd | 1997-01-31 |
| yyyy-MM-dd HH:mm | 1997-01-31 23:59:59 |
日付の書式設定に使用する文字列パターンは、Java クラス java.text.SimpleDateFormat に基づいています。完全なリファレンスは、日付と時刻の書式構文テーブル ↗で確認できます。
F.to_date(column, format=None)F.to_timestamp(column, format=None)F.to_utc_timestamp(timestamp, tz)F.unix_timestamp(timestamp=None, format='yyyy-MM-dd HH:mm:ss')F.date_format(date, format)F.from_unixtime(timestamp, format='yyyy-MM-dd HH:mm:ss')F.from_utc_timestamp(timestamp, tz)long から timestamp へのキャスト一部のシステムでは、タイムスタンプを long データ型でミリ秒単位で保存します。PySpark SQL はタイムスタンプを秒単位で保存します。正しく timestamp にキャストするには、long 型のタイムスタンプを1000で割る必要があります。
Copied!1 2 3casted_timestamp = (F.col('timestamp') / 1000).cast("timestamp") df = df.withColumn("timestamp", casted_timestamp) # 1531860192661 => Tuesday, July 17, 2018 8:43:12 PM
わかりやすくするために、F.from_unixtime(timestamp) を使用することもできます。
Copied!1 2timestamp = F.from_unixtime(F.col('timestamp') / 1000) df = df.withColumn("timestamp", timestamp)
long から timestamp にキャストすると、精度が低下します。SQL は秒のパーセンテージや小数部分を保存できません。
F.trunc(date, format)F.date_trunc(format, timestamp)