问题描述
我将 Postgresql 与 Python 结合使用,尽管当前问题的主题似乎是纯 sql。
基于PostgreSQL documentation,改变列的类型应该是这样的:
ALTER TABLE products ALTER COLUMN price TYPE numeric(10,2);
因此,如果我有一个名为“checks”的表,其中有一列“check_date_time”的类型为“timestamp”,并且我想将其更改为“timestamptz”,那么根据上述内容,这应该工作:
ALTER TABLE checks ALTER COLUMN check_date_time TYPE timestamptz;
但是你猜怎么着......它没有。我不断收到错误消息
执行 sql 语句时出错。错误:输入结束时出现语法错误
位置:19 - 连接:测试:31ms
顺便说一下,其他一切都有效。我可以创建表,做选择等,只是 ALTER 给我带来了这些麻烦。我已经在这里讨论了大约一个小时,而且对于它可能存在的问题,我真的没有想法了。非常欢迎任何建议。
解决方法
可能不会在转换中应用正确的时区,如果您不明确这一点,将假定时区,通常不是 UTC。
ALTER TABLE checks
ALTER check_date_time TYPE timestamptz USING check_date_time AT TIME ZONE 'UTC',ALTER check_date_time SET DEFAULT now();