Мы меняем столбец run_dates
(для каждого запроса) с daterange на tstzrange, столбец с тестовыми данными за несколько месяцев. По сути, мы хотим выполнить миграцию!
Я запускаю приведенный ниже скрипт, вдохновленный postgreSQL изменением типа данных столбца на отметку времени без часового пояса , и я должен признать, что мой SQL фон в основном ничто
-- Create a temporary TIMESTAMP column
ALTER TABLE table_name ADD COLUMN run_dates_holder TSTZRANGE NULL;
-- Copy casted value over to the temporary column
UPDATE table_name SET run_dates_holder = run_dates::TSTZRANGE;
-- Modify original column using the temporary column
ALTER TABLE table_name ALTER COLUMN run_dates TYPE
TSTZRANGE USING run_dates_holder;
-- Drop the temporary column (after examining altered column values)
ALTER TABLE table_name DROP COLUMN run_dates_holder;
К сожалению ..... Эти типы не переводятся естественным образом
sqlalchemy.exc.ProgrammingError: (psycopg2.ProgrammingError) cannot cast type daterange to tstzrange
и
psycopg2.ProgrammingError: cannot cast type daterange to tstzrange
LINE 5: ...ble_name SET run_dates_holder = run_dates::TSTZRANG...
Кто-нибудь когда-либо успешно переносил диапазон дат в диапазон tstzrange?
В качестве резервной копии мы можем просто удалить столбец диапазона дат и создать заново. как tzzrange, так как это повлияет только на тестовые данные. Просто менее оптимально для команды. Стоит попытаться разобраться в этом, и я думаю, что решение здесь, по крайней мере, стоит будущим мигрантам «daterange-to-tzzrange», так как я не нашел других документов / ресурсов по этому вопросу