我想将PostgreSQL中的列类型从日期更改为带时区的时间戳。但是,尽管表中只有3条记录,并且没有任何错误或成功的结果,但后续SQL的执行仍在继续,直到我停止它。
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 表达式另一种变体
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'
,没有任何影响。
如果所有记录中的列都为空值,则立即使用simple alter sql更改类型
alter table some_table
alter column column_date type timestamp
using column_date::timestamp with time zone
- 我使用PostgreSQL 12*
是否有适当的方法将日期更改为带时区的时间戳?
我知道我可以通过创建一个具有适当类型的新列,然后交换它们来完成此任务:))
1条答案
按热度按时间erhoui1w1#
下面是一个简单的示例,说明如何使用UTC作为时区
第一个
| 米达特|
| - -|
| 2022年1月1日|
| 2021年1月1日|
| 2020年1月1日|
第一个
| 米达特|
| - -|
| 2022年01月01日00时00分00秒00分|
| 2021年01月01日00时00分00秒00秒+00秒|
| 2020年01月01日00:00:00+00时|
fiddle