PostgreSQL中如何显示带时区的UTC当前时间戳?
解决PostgreSQL获取带UTC时区后缀时间的问题
你当前执行的select (current_timestamp AT TIME ZONE 'UTC');返回不带时区后缀的结果,是因为AT TIME ZONE 'UTC'会把带时区的current_timestamp(timestamp with time zone类型)转换成不带时区的时间戳(timestamp without time zone),所以输出没有时区标记。
要得到2024-10-04 18:44:59.34674+00:00格式的结果,有两种常用方法:
方法1:获取带时区的时间类型结果
如果需要的是timestamp with time zone类型的原生输出(而非字符串),可以通过两次AT TIME ZONE转换实现:
SELECT (current_timestamp AT TIME ZONE 'UTC') AT TIME ZONE 'UTC';
原理:第一次AT TIME ZONE 'UTC'得到UTC时刻的不带时区时间戳,第二次AT TIME ZONE 'UTC'将这个时间戳标记为UTC时区的带时区时间,输出会自动带上+00:00后缀。
方法2:格式化输出为指定字符串
如果只需要字符串格式的结果,可以用to_char函数自定义格式:
SELECT to_char(current_timestamp AT TIME ZONE 'UTC', 'YYYY-MM-DD HH24:MI:SS.US+00:00');
其中US表示微秒精度,+00:00是固定的UTC时区后缀,这样会直接输出你需要的字符串格式。
内容的提问来源于stack exchange,提问作者Bhanu
相关产品推荐
相关产品推荐

