Есть ли MySQL, эквивалентный Oracle TIMESTAMP WITH TIME ZONE? - PullRequest
5 голосов
/ 28 ноября 2011

Есть ли MySQL, эквивалентный Oracle TIMESTAMP WITH TIME ZONE?

Мне нужно отобразить таблицу Oracle, в которой есть несколько столбцов с этим типом данных, в таблицу MySQL, но я не могу найти простой способ сделать это, не прибегая к некоторым функциям MySQL.

Спасибо и всего наилучшего.

Ответы [ 2 ]

2 голосов
/ 28 ноября 2011

Нет, вам нужно разделить данные на 2 столбца, один из которых содержит дату и время, а другой содержит информацию о часовом поясе.Но то, что вы поместите в последнее поле, зависит от того, что вы сохранили в Oracle - тип данных TIMESTAMP WITH TIME ZONE может содержать смещение TZ и (необязательно) регион часового пояса.Очевидно, что последнее является требованием семантической корректности даты и времени, но IIRC Oracle не предписывает заполнение этих данных.

без обращения к некоторым функциям MySQL

Поскольку MySQL не имеет тип данных, будет очень сложно написать функцию MySQL для его обработки - гораздо проще создать совместимое с MySQL представление в Oracle, где поддерживается тип данных.Вам просто нужно выяснить, какие данные у вас есть на самом деле, и решить, как вы хотите представить их в MySQL.По соглашению это означает сохранение его в UTC вместе с TZ в отдельном столбце, а затем преобразование его по выбору с помощью функции convert_tz (всегда из UTC)

1 голос
/ 28 ноября 2011

MySQL всегда хранит метки времени как utc . Даты всегда хранятся без информации о часовом поясе.

Вы можете настроить mysql для возврата значений now () в разных часовых поясах .

Чтобы сохранить текущее смещение, вам нужно добавить это к некоторому столбцу самостоятельно.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...