Ändern Sie die Spalte Typ von Charakter variiert, um Zeitstempel ohne Zeitzone in PostgreSQL
In rails erstellte ich eine string-Spalte genannt open_time aber dann merkte ich, sollte ich die Verwendung der datetime-Typ. Ich habe
change_column :polls, :open_time, :datetime
Aber es sagte:
PG::Error: ERROR: column "open_time" cannot be cast to type timestamp without time zone
: ALTER TABLE "polls" ALTER COLUMN "open_time" TYPE timestamp
Wenn ich einfach die string-Spalte, und fügen Sie neue datetime-Spalte ist, die ich verlieren die gespeicherten Daten in der Zeichenfolge-Spalte. Alternativ können Sie im PostgreSQL-ich Spalte hinzufügen:
ALTER TABLE polls ADD COLUMN published_time timestamp;
Dann habe ich versucht, die Daten aus dem string-Spalte wie:
UPDATE polls SET published_time = strToTimeStamp(open_time);
Also meine Frage ist gibt es irgendwelche Funktionen, die ich verwenden können, wie strToTimeStamp
konvertieren können Zeichen unterschiedlichen Typs timestamp ohne Zeit-zone geben?
- Sie möchten
ALTER COLUMN ... USING
. Siehe z.B. stackoverflow.com/... (in der Nähe-dup)
Du musst angemeldet sein, um einen Kommentar abzugeben.
Verwenden
to_timestamp()
zum ändern der Daten-Typ der Spalte in der Ort.Mehr unter diese sehr ähnlichen Fragen:
Alter-Charakter-Feld zu Datum
Cast-varchar-Datentyp auf Datum
Glaube nicht, dass man das machen kann, da es begrenzt durch die Leistungsfähigkeit der Datenbank. Die Idee ist dabei folgende:
Diese Schritte können gesetzt werden in gleichen migration-Datei und halten Sie in einer Transaktion für den Fall der Fälle.