データ接続と統合Python (Spark)PySparkリファレンス日付とタイムスタンプ

注: 以下の翻訳の正確性は検証されていません。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 に基づいています。完全なリファレンスは、日付と時刻の書式構文テーブル ↗で確認できます。

文字列からの変換

  • 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 3 casted_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 2 timestamp = F.from_unixtime(F.col('timestamp') / 1000) df = df.withColumn("timestamp", timestamp)

long から timestamp にキャストすると、精度が低下します。SQL は秒のパーセンテージや小数部分を保存できません。

切り詰め

  • F.trunc(date, format)
  • F.date_trunc(format, timestamp)