Snowflake中如何将带多时区的VARCHAR日期统一转换为GMT时区?
将Snowflake中带GMT时区的VARCHAR日期统一转为GMT时区
可以通过Snowflake的时间戳函数完成解析和时区转换,步骤如下:
解析带时区的字符串
先把原字符串中的GMT替换为UTC(二者等价,Snowflake对UTC格式的解析更兼容),再用TO_TIMESTAMP_TZ函数将字符串转为带时区的时间戳类型,保留原时间的时区信息。转换为GMT(UTC)时区
使用AT TIME ZONE 'UTC'将带时区的时间戳转换为GMT时区的时间,最后用TO_CHAR格式化为和原字符串一致的输出样式。
完整SQL示例
假设你的表名为your_table,日期列名为date_str,执行以下查询:
SELECT date_str AS original_date, TO_CHAR( TO_TIMESTAMP_TZ(REPLACE(date_str, 'GMT', 'UTC')) AT TIME ZONE 'UTC', 'MM/DD/YYYY HH:MI:SS AM "GMT"' ) AS converted_to_gmt FROM your_table;
示例输出
| original_date | converted_to_gmt |
|---|---|
| 1/22/2024 9:51:44 AM GMT+2 | 1/22/2024 7:51:44 AM GMT |
| 1/23/2024 3:01:16 PM GMT | 1/23/2024 3:01:16 PM GMT |
| 1/23/2024 4:11:56 PM GMT-4 | 1/23/2024 8:11:56 PM GMT |
关键函数说明
REPLACE(date_str, 'GMT', 'UTC'):替换字符串标识,确保TO_TIMESTAMP_TZ能正确识别时区偏移TO_TIMESTAMP_TZ():将字符串转换为带时区的时间戳,保留原时间的时区属性AT TIME ZONE 'UTC':将带时区的时间戳转换为GMT时区的时间TO_CHAR():将转换后的时间格式化为指定的字符串样式,保持和原数据一致的可读性
内容的提问来源于stack exchange,提问作者Priya d
相关产品推荐
相关产品推荐

