![](/img/trans.png)
[英]Change column type from timestamp WITHOUT time zone to timestamp WITH time zone
[英]Cannot change column type from date to timestamp with time zone in PostgreSQL
我想将 PostgreSQL 中的列类型从日期更改为带时区的时间戳。 但是 follow sql 的执行一直持续到我停止它,尽管表中只有 3 条记录并且没有任何错误或成功结果。
alter table some_table
alter column column_date type timestamp
using to_timestamp(extract(epoch from column_date))
同时select to_timestamp(extract(epoch from column_date)) from some_table
正在正确执行,没有任何错误。
我尝试了使用表达式的另一种变体
using column_date::timestamptz
using timestamp with time zone 'epoch' + (column_date + interval '0 second') * interval '1 second'
using column_date AT TIME ZONE 'UTC'
无效。如果在所有记录类型中有 null 列的值立即更改,简单更改 sql
alter table some_table
alter column column_date type timestamp
using column_date::timestamp with time zone
我用 PostgreSQL 12
是否有适当的方法将日期更改为带时区的时间戳?
PS 我知道我可以通过创建一个具有适当类型的新列然后交换它们来完成此任务:))
这是一个如何使用 UTC 作为时区的简单示例
CREATE tABLE tm( mydate date)
CREATE TABLE
INSERT INTO TM VALUES('2022-01-01'),('2021-01-01'),('2020-01-01')
INSERT 0 3
SELECT * FROM tm
我的约会 |
---|
2022-01-01 |
2021-01-01 |
2020-01-01 |
SELECT 3
ALTER TABLE tm
ALTER COLUMN myDate TYPE timestamp with time zone
USING myDate::timestamp AT TIME ZONE 'UTC';
ALTER TABLE
SELECT * FROM tm
我的约会 |
---|
2022-01-01 00:00:00+00 |
2021-01-01 00:00:00+00 |
2020-01-01 00:00:00+00 |
SELECT 3
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.