タイプtime
の列をタイプtimestamp
に変更しようとしたときにこのエラーを受け取りました:
PG::CannotCoerce: ERROR: cannot cast type time without time zone to timestamp without time zone
既存の時間の変換方法は重要ではありませんが、この列を変更する必要があります。これを強制したり、キャストしたりするにはどうすればよいですか?
これはSQLステートメントです。
ALTER TABLE "students" ALTER COLUMN "time_since_missing_schedule_notification" TYPE timestamp USING CAST(time_since_missing_schedule_notification AS timestamp)
Rails/ActiveRecordを使用していますが、これは上記のSQLステートメントを生成したRubyコードです。
change_column :students, :time_since_missing_schedule_notification, 'timestamp USING CAST(time_since_missing_schedule_notification AS timestamp without time zone)'
HerokuのPostgreSQLサーバーに接続すると、次のバージョンが表示されます。
psql (9.3.1, server 9.2.7)
時間にはdate
コンポーネントがないため、日付を指定する必要があります。 ALTER TABLE
ステートメントにdate
とtime
の値を追加するだけです。
ALTER TABLE students ALTER COLUMN time_since_missing_schedule_notification
TYPE timestamp USING ('2000-1-1'::date + time_since_missing_schedule_notification)