Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/postgresql/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
这个Postresql ALTER表有什么问题?_Sql_Postgresql_Timestamp - Fatal编程技术网

这个Postresql ALTER表有什么问题?

这个Postresql ALTER表有什么问题?,sql,postgresql,timestamp,Sql,Postgresql,Timestamp,我有一个数据库,其中有一列varchar,我希望将其转换为时间戳。我想这样做,但不断得到语法错误,请有人建议 ALTER TABLE MY_TABLE ALTER COLUMN MY_COLUMN TYPE timestamp USING to_timestamp(MY_COLUMN::double precision); MY_列的类型为VARCHAR255 NOT NULL 错误内容如下: Syntax error in SQL statement "ALTER TABLE MY_TA

我有一个数据库,其中有一列varchar,我希望将其转换为时间戳。我想这样做,但不断得到语法错误,请有人建议

ALTER TABLE MY_TABLE 
ALTER COLUMN MY_COLUMN TYPE timestamp 
USING to_timestamp(MY_COLUMN::double precision);
MY_列的类型为VARCHAR255 NOT NULL

错误内容如下:

Syntax error in SQL statement "ALTER TABLE MY_TABLE 
ALTER COLUMN MY_COLUMN TYPE TIMESTAMP 
USING[*] TO_TIMESTAMP(MY_COLUMN::DOUBLE PRECISION) "; SQL statement:
ALTER TABLE MY_TABLE 
ALTER COLUMN MY_COLUMN TYPE timestamp 
USING to_timestamp(MY_COLUMN::double precision) [42000-176] 42000/42000

在Grails中运行的Postgresql似乎不支持时间戳。正如问题注释中带有“无”名称的@a_horse_所指出的,代码是有效的。感谢您指出sqlfiddle.com,我还没有意识到这样一个资源的存在。

您忽略了分享您所遇到的语法错误的确切内容。不确定语法,但这是一种冒险的方法。如果varchar列有'fred'和'barney'这样的值怎么办?对我来说很有用:我知道数据库中的这个列中绝对没有非数字字符,我只想将该列转换为时间戳,或者创建一个替换列,其中的值是时间戳,这些时间戳是将unix epoch的字符串表示形式转换为时间戳后创建的。好的,谢谢-数据库是在Grails内部运行的数据库,因此可能PSQL的版本/变体有问题。在没有alter table的情况下,是否还有其他方法可以做到这一点,比如创建一个temp列,我可以在以后处理它?