pyspark.sql.functions.from_utc_timestamp

pyspark.sql.functions. from_utc_timestamp ( timestamp : ColumnOrName , tz : ColumnOrName ) → pyspark.sql.column.Column [source]

这是一个常见的函数,用于支持无时区时间戳的数据库。这个函数接受一个不依赖于时区的时间戳,并将其解释为UTC中的时间戳,并将该时间戳呈现为给定时区的时间戳。

然而,Spark中的时间戳表示自Unix纪元以来的微秒数,这并不是独立于时区的。因此,在Spark中,此函数只是将时间戳值从UTC时区转换为给定的时区。

如果输入是带有时区的字符串,例如‘2018-03-13T06:18:23+00:00’,该函数可能会返回令人困惑的结果。原因在于,Spark首先根据字符串中的时区将字符串转换为时间戳,最后通过根据会话本地时区将时间戳转换为字符串来显示结果。

版本 1.5.0 中的新功能。

在版本 3.4.0 中更改: 支持 Spark Connect。

Parameters
timestamp or str

包含时间戳的列

tz or str

一个字符串,详细说明输入应该调整到哪个时区 ID。它应该 采用区域基础的时区 ID 或时区偏移的格式。区域 ID 必须 采用 ‘区域/城市’ 的形式,如 ‘America/Los_Angeles’。时区偏移必须为 ‘(+|-)HH:mm’ 格式,例如 ‘-08:00’ 或 ‘+01:00’。此外,‘UTC’ 和 ‘Z’ 也可以作为 ‘+00:00’ 的别名。其他简短名称不推荐使用 因为它们可能会导致歧义。

在 2.4 版本中更改: tz 可以接受一个 Column ,其中包含时区 ID 字符串。

Returns

在给定时区中表示的时间戳值。

示例

>>> df = spark.createDataFrame([('1997-02-28 10:30:00', 'JST')], ['ts', 'tz'])
>>> df.select(from_utc_timestamp(df.ts, "PST").alias('local_time')).collect()
[Row(local_time=datetime.datetime(1997, 2, 28, 2, 30))]
>>> df.select(from_utc_timestamp(df.ts, df.tz).alias('local_time')).collect()
[Row(local_time=datetime.datetime(1997, 2, 28, 19, 30))]