2012-11-08 104 views
2

我想將PostgreSQL數據庫中的特定列從character_varying類型更改爲date類型。日期的格式爲yyyy:mm:ddCast varchar類型迄今

我試圖做的:

alter table table_name 
alter column date_time type date using (date_time::text::date); 

但我收到一條錯誤消息:

日期/時間字段值超出範圍:「2011:06:15 「

回答

6

當你施放textvarchardate,安裝的默認日期格式預期 - 取決於您的postgresql.conf中的datestyle設置。

一般來說,冒號(:)是時間分離器,在一個簡單的演員,PostgreSQL將可能試圖解釋 '2011:06:15' 的時間 - 和失敗。

要刪除模棱兩可使用to_date()有匹配模式爲您的日期:

ALTER TABLE table_name 
ALTER COLUMN date_time type date 
USING to_date(date_time, 'YYYY:MM:DD'); -- pattern for your example 
+0

非常感謝,它的工作原理!但是現在我在小時欄中遇到同樣的問題。這是一個字符串,我想在時間類型上轉換它,但我不知道該怎麼做。即使遇到這個問題,你能幫助我嗎?提前致謝。 –

+0

@LoBizzarri:用'to_timestamp()'做的一塊蛋糕。你有沒有關注我提供的鏈接?如果它仍然給你靜態的,可以用你擁有的東西和你想要的東西來舉例說明另一個問題。 –

+0

對不起,昨天我在命令行中犯了一個錯誤。現在沒關係,謝謝!我使用: ALTER TABLE table_name ALTER COLUMN hour_time類型時間 USING to_timestamp(hour_time,'HH24:MI:SS'); –