32 lines
884 B
SQL
32 lines
884 B
SQL
DO $$
|
|
DECLARE
|
|
target record;
|
|
BEGIN
|
|
FOR target IN
|
|
SELECT * FROM (VALUES
|
|
('student_enrollments', 'created_at'),
|
|
('student_enrollments', 'updated_at'),
|
|
('student_enrollments', 'removed_at'),
|
|
('student_groups', 'created_at'),
|
|
('student_groups', 'updated_at'),
|
|
('student_group_members', 'created_at')
|
|
) AS targets(table_name, column_name)
|
|
LOOP
|
|
IF EXISTS (
|
|
SELECT 1
|
|
FROM information_schema.columns
|
|
WHERE table_schema = 'public'
|
|
AND table_name = target.table_name
|
|
AND column_name = target.column_name
|
|
AND data_type = 'timestamp without time zone'
|
|
) THEN
|
|
EXECUTE format(
|
|
'ALTER TABLE %I ALTER COLUMN %I TYPE TIMESTAMPTZ(3) USING %I AT TIME ZONE ''UTC''',
|
|
target.table_name,
|
|
target.column_name,
|
|
target.column_name
|
|
);
|
|
END IF;
|
|
END LOOP;
|
|
END $$;
|