БД Oracle: преобразование столбцов меток времени (CET/CEST) в формат UTC при экспорте/импорте Oracle

Моя проблема заключается в том, что в моей базе данных оракула есть столбец timestamp(6) (без какой-либо информации о временных метках), но временные метки хранятся в CET/CEST (Европа/Берлин).

Нам нужно исправить метки времени на UTC (потому что у нас уже есть проблемы, когда время переключается с CEST на CET — например, 28.10.2018)

Я уже нашел следующее, как это можно сделать с помощью скрипта обновления: Как обновить столбец TIMESTAMP до TIMESTAMP WITH TIME ZONE в Oracle

Так как мы тоже планируем мигрировать с 11 на 12 - у меня вопрос, а можно ли это было сделать и во время дампа exp/imp (expdp/impdp)?

Стоит ли изучать PHP в 2023-2024 годах?
Стоит ли изучать PHP в 2023-2024 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
0
0
562
1

Ответы 1

Правильное преобразование будет таким:

 FROM_TZ(YOUR_COLUMN, 'Europe/Berlin')  AT TIME ZONE 'UTC'

это возвращает значение TIMESTAMP WITH TIME ZONE. Если вы предпочитаете получать TIMESTAMP, вы можете использовать

 SYS_EXTRACT_UTC(YOUR_COLUMN, 'Europe/Berlin')

Однако я не знаю, как включить это в импорт/экспорт. Я предполагаю, что вам нужно использовать REMAP_DATA:

CREATE OR REPLACE PACKAGE Convert_Date AS       
    FUNCTION TO_UTC(ts IN TIMESTAMP) RETURN TIMESTAMP;
END Convert_Date;
/


CREATE OR REPLACE PACKAGE BODY Convert_Date AS

FUNCTION TO_UTC(ts IN TIMESTAMP) RETURN TIMESTAMP
BEGIN
    RETURN SYS_EXTRACT_UTC(ts, 'Europe/Berlin');    
END;

END Convert_Date;
/

А затем используйте этот параметр импорта:

REMAP_DATA=[schema.]tablename.column_name:Convert_Date.TO_UTC

Другие вопросы по теме