2014-12-02 67 views
0

我有一个数据库,其中有一列varchar,我想转换为时间戳。我想要做这样的事情,但不断收到语法错误,请有人建议?这个Postresql ALTER TABLE有什么问题?

ALTER TABLE MY_TABLE 
ALTER COLUMN MY_COLUMN TYPE timestamp 
USING to_timestamp(MY_COLUMN::double precision); 

MY_COLUMN类型为VARCHAR(255)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 
+0

你忽略了精确地分享你所说的“语法错误”。 – 2014-12-02 20:29:36

+0

对不起,现在加入。 – John 2014-12-02 20:34:34

+0

不确定语法,但这是一个有风险的方法。如果这个varchar列有像'fred'和'barney'这样的值呢? – 2014-12-02 20:46:46

回答

0

这样看来,在Grails内部运行我的PostgreSQL不支持TO_TIMESTAMP。正如问题的注释中由@a_horse_with_no_name指出的那样,代码有效。感谢您指出sqlfiddle.com,我没有意识到存在这样的资源。