Greenplum中替代Snowflake的TO_TIMESTAMP_NTZ与CONVERT_TIMEZONE函数咨询
Snowflake到Greenplum的日期函数替代方案
原Snowflake语句TO_TIMESTAMP_NTZ(CONVERT_TIMEZONE('UTC', CURRENT_TIMESTAMP))的核心功能是:获取当前带时区时间,转换为UTC时区,再转为无时区的时间戳。在Greenplum中可以用以下方式替代:
直接替代方案
使用Greenplum(基于PostgreSQL)的AT TIME ZONE操作符一步实现,代码如下:
SELECT CURRENT_TIMESTAMP AT TIME ZONE 'UTC' AS utc_ntz_time;
逻辑说明
CURRENT_TIMESTAMP在Greenplum中返回带时区的timestamp with time zone类型,和Snowflake中的CURRENT_TIMESTAMP行为一致。AT TIME ZONE 'UTC'会将带时区的时间转换为UTC时区下的无时区时间戳(timestamp without time zone),正好对应Snowflake中CONVERT_TIMEZONE转UTC +TO_TIMESTAMP_NTZ转无时区的组合效果。
可选的显式类型转换(如果需要明确类型)
如果需要显式指定返回类型为无时区时间戳,可以加上CAST:
SELECT CAST(CURRENT_TIMESTAMP AT TIME ZONE 'UTC' AS TIMESTAMP) AS utc_ntz_time;
内容的提问来源于stack exchange,提问作者Denis
相关产品推荐
相关产品推荐

