- 类别:
CONVERT_TIMEZONE¶
将时间戳转换为另一个时区。
语法¶
实参¶
source_tz该字符串指定输入时间戳的时区。对于没有时区的时间戳(即 TIMESTAMP_NTZ),必须使用此字符串。
target_tz该字符串指定输入时间戳应转换为的时区。
source_timestamp_ntz对于 3 实参版本,该字符串指定要转换的时间戳(必须是 TIMESTAMP_NTZ)。
source_timestamp对于 2 实参版本,该字符串指定要转换的时间戳(可以是任何时间戳变体,包括 TIMESTAMP_NTZ)。
返回¶
返回 TIMESTAMP_NTZ、TIMESTAMP_TZ 或 NULL 类型的值。
对于 3 参数版本,返回类型为 TIMESTAMP_NTZ 的值。
对于 2 参数版本,返回类型为 TIMESTAMP_TZ 的值。
如果任何实参为 NULL,则返回 NULL。
使用说明¶
输出中时间戳的显示格式由当前会话的 时间戳输出格式 和返回的时间戳值的数据类型决定。
对于 3 实参版本,结果中的“挂钟”时间表示与输入时区中的输入“挂钟”相同的时间点,但位于目标时区。
对于 2 实参版本,
source_timestamp实参通常包括时区。如果值为类型 TIMESTAMP_TZ,则从其值中获取时区。否则,使用当前会话时区。对于
source_tz和target_tz,可以指定 时区名称 (https://www.iana.org/time-zones) 或 IANA 时区数据库 (https://data.iana.org/time-zones/tzdb-2025b/zone1970.tab) 版本 2025b 中的链接名称`_(例如,:code:`America/Los_Angeles、Europe/London、UTC、Etc/GMT等)。备注
时区名称区分大小写,必须 放在单引号内(例如
'UTC')。Snowflake 不支持 大多数时区 缩写 (link removed) (例如,
PDT、EST等),因为给定的缩写可能指几个不同的时区之一。例如,CST可能指北美中部标准时间 (UTC-6)、古巴标准时间 (UTC-5) 和中国标准时间 (UTC+8)。
示例¶
要对示例中返回的时间戳使用默认 时间戳输出格式,请在当前会话中取消设置 TIMESTAMP_OUTPUT_FORMAT 参数:
指定了源时区的示例¶
以下示例使用 CONVERT_TIMEZONE 函数的 3 实参版本,并指定 source_tz 值。这些示例返回 TIMESTAMP_NTZ 值。
将洛杉矶的“挂钟”时间转换为匹配的纽约“挂钟”时间:
将华沙的“挂钟”时间转换为匹配的 UTC“挂钟”时间:
未指定源时区的示例¶
以下示例使用 CONVERT_TIMEZONE 函数的 2 实参版本。这些示例返回 TIMESTAMP_TZ 值。因此,返回的值包括一个偏移量,其显示时间戳的时区和协调世界时 (UTC) 之间的时差。例如,America/Los_Angeles 时区有一个 -0700 时差,以显示它比 UTC 晚 7 小时。
将指定 TIMESTAMP_TZ 值的字符串转换为不同的时区:
显示不同时区的当前“挂钟”时间: