注: 以下の翻訳の正確性は検証されていません。AIPを利用して英語版の原文から機械的に翻訳されたものです。

日付とタイムスタンプ

1. 日付の加算・減算

日付に日数を加算・減算

  • F.date_add(start, days)
  • F.date_sub(start, days)

日付に月を加算

  • F.add_months(start, months)

2つの日付間の日数や月数を取得

  • F.datediff(end, start)
  • F.months_between(date1, date2)

月の最終日を取得

  • F.last_day(date)

次の dayOfWeek の日付を取得

  • F.next_day(date, dayOfWeek)

2. 日付の値

年、月、日、分、秒を取得

  • 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)

3. フォーマット

日付&時刻フォーマット構文

ここにクイックリファレンスを示します。

フォーマット
yyyy-MM-dd1997-01-31
yyyy-MM-dd HH:mm1997-01-31 23:59:59

日付フォーマットの文字列パターンは、Java クラス java.text.SimpleDateFormat に基づいています。完全なリファレンスは Date & Time Format Syntax Table で利用可能です。

文字列からの変換

  • 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 では、タイムスタンプが秒単位で格納されます。タイムスタンプの long バージョンを適切に timestamp にキャストするには、1000 で割る必要があります。

Copied!
1 2 3 4 # タイムスタンプをキャストする casted_timestamp = (F.col('timestamp') / 1000).cast("timestamp") df = df.withColumn("timestamp", casted_timestamp) # 1531860192661 => 2018年7月17日火曜日 20:43:12

また、明瞭さのために F.from_unixtime(timestamp) も使用できます:

Copied!
1 2 3 4 5 # 'timestamp'列をUnix時間から一般的な時間に変換します timestamp = F.from_unixtime(F.col('timestamp') / 1000) # データフレームに新しい'timestamp'列を追加(もしくは既存の列を更新)します df = df.withColumn("timestamp", timestamp)

longからtimestampにキャストする際に、粒度が失われます。SQL では、秒のパーセンテージや小数を保存できません。

切り捨て

  • F.trunc(日付, 形式)
  • F.date_trunc(形式, タイムスタンプ)