共用方式為


make_timestamp

從年、月、天、小時、分、秒及(可選)時區欄位建立時間戳記。 或者,也可以從日期、時間和(可選的)時區欄位建立時間戳記。 結果資料型態與配置 spark.sql.timestampType值一致。 若配置 spark.sql.ansi.enabled 為假,該函式在無效輸入時回傳 NULL。 否則,它會拋出錯誤。

關於對應的 Databricks SQL 函式,請參見 make_timestamp 函數

語法

import pyspark.sql.functions as sf

# From individual components
sf.make_timestamp(years=<years>, months=<months>, days=<days>, hours=<hours>, mins=<mins>, secs=<secs>)

# With timezone
sf.make_timestamp(years=<years>, months=<months>, days=<days>, hours=<hours>, mins=<mins>, secs=<secs>, timezone=<timezone>)

# From date and time
sf.make_timestamp(date=<date>, time=<time>)

# From date and time with timezone
sf.make_timestamp(date=<date>, time=<time>, timezone=<timezone>)

參數

參數 類型 Description
years pyspark.sql.Columnstr 代表年份,從1年到9999年。 從各個元件建立時間戳記時必須使用。 必須以月份、天、小時、分鐘和秒來使用。
months pyspark.sql.Columnstr 代表的月份為1月1日至12月(12月)。 從各個元件建立時間戳記時必須使用。 必須以年、天、小時、分鐘和秒數來使用。
days pyspark.sql.Columnstr 表示月份的日期,從1到31。 從各個元件建立時間戳記時必須使用。 必須以年、月、小時、分鐘和秒數來使用。
hours pyspark.sql.Columnstr 代表的一天中小時,從0到23。 從各個元件建立時間戳記時必須使用。 必須以年、月、天、分鐘和秒數來使用。
mins pyspark.sql.Columnstr 代表的每分鐘,從0到59。 從各個元件建立時間戳記時必須使用。 必須以年、月、天、小時和秒數來使用。
secs pyspark.sql.Columnstr 每分鐘的秒數及其微分數,從0到60。 這個數值可以是像 13 這樣的整數,或像 13.123 這樣的分數。 若 sec 參數等於 60,秒數欄位設為 0,並加 1 分鐘至最後時間戳。 從各個元件建立時間戳記時必須使用。 必須以年、月、天、小時和分鐘來使用。
timezone pyspark.sql.Columnstr 選擇性。 時區識別碼。 例如CET、UTC等。
date pyspark.sql.Columnstr 要表示的日期,以有效的日期格式表示。 在建立日期與時間成分的時間戳時必須使用。 必須僅與時間參數一起使用。
time pyspark.sql.Columnstr 以有效的 TIME 格式表示的時間。 在建立日期與時間成分的時間戳時必須使用。 必須僅與日期參數一起使用。

退貨

pyspark.sql.Column:一個包含時間戳的新欄位。

範例

範例 1:製作年、月、天、小時、分鐘、秒數和時區的時間戳。

import pyspark.sql.functions as sf
df = spark.createDataFrame([[2014, 12, 28, 6, 30, 45.887, 'CET']],
    ['year', 'month', 'day', 'hour', 'min', 'sec', 'tz'])
df.select(
    sf.make_timestamp(df.year, df.month, df.day, 'hour', df.min, df.sec, 'tz')
).show(truncate=False)
+----------------------------------------------------+
|make_timestamp(year, month, day, hour, min, sec, tz)|
+----------------------------------------------------+
|2014-12-27 21:30:45.887                             |
+----------------------------------------------------+

範例二:製作年、月、天、小時、分、秒(不含時區)的時間戳。

import pyspark.sql.functions as sf
df = spark.createDataFrame([[2014, 12, 28, 6, 30, 45.887]],
    ['year', 'month', 'day', 'hour', 'min', 'sec'])
df.select(
    sf.make_timestamp('year', 'month', df.day, df.hour, df.min, df.sec)
).show(truncate=False)
+--------------------------------------------------+
|make_timestamp(year, month, day, hour, min, sec) |
+--------------------------------------------------+
|2014-12-28 06:30:45.887                           |
+--------------------------------------------------+

範例三:用日期和時間加上時區來做時間戳。

import pyspark.sql.functions as sf
from datetime import date, time
df = spark.range(1).select(
    sf.lit(date(2014, 12, 28)).alias("date"),
    sf.lit(time(6, 30, 45, 887000)).alias("time"),
    sf.lit("CET").alias("tz")
)
df.select(sf.make_timestamp(date=df.date, time=df.time, timezone=df.tz)).show(truncate=False)
+------------------------------------+
|make_timestamp(date, time, timezone)|
+------------------------------------+
|2014-12-27 21:30:45.887             |
+------------------------------------+

範例 4:從日期和時間(不含時區)製作時間戳記。

import pyspark.sql.functions as sf
from datetime import date, time
df = spark.range(1).select(
    sf.lit(date(2014, 12, 28)).alias("date"),
    sf.lit(time(6, 30, 45, 887000)).alias("time")
)
df.select(sf.make_timestamp(date=df.date, time=df.time)).show(truncate=False)
+--------------------------+
|make_timestamp(date, time)|
+--------------------------+
|2014-12-28 06:30:45.887   |
+--------------------------+