Как сохранить временную метку с часовым поясом - PullRequest
0 голосов
/ 07 ноября 2018

Я пытаюсь сохранить метку времени с часовым поясом в моей базе данных оракула. ​​

У меня есть, например, этот код:

$deadline = new \DateTime('2018-11-07 13:33', new \DateTimeZone("EUROPE/BERLIN"));
$control->setDeadline($deadline);

и результат, хранящийся в моей базе данных Oracle: 07.11.18 13: 33: 00.000000000 +01: 00

но моя цель - сохранить метку времени в следующем формате: 07.11.18 13: 33: 00.000000000 ЕВРОПА / БЕРЛИН

если я выполню этот запрос, значение будет правильно сохранено в нужном формате:

update my_table
set deadline = TIMESTAMP '2018-11-07 09:00:00 EUROPE/BERLIN'

Что я делаю не так? Как правильно отформатировать метку времени для получения желаемого результата с помощью Symfony?

1 Ответ

0 голосов
/ 07 ноября 2018

Похоже, синфония преобразуется Europe/Berlin в +01:00 - что было бы ошибкой.

В качестве обходного пути вы можете сделать следующее:

ALTER SESSION SET TIME_ZONE = 'Europe/Berlin';

и затем введите значение без часового пояса, т.е.

$deadline = new \DateTime('2018-11-07 13:33');
$control->setDeadline($deadline);

Если вы вставите метку времени в столбец TIMESTAMP WITH TIME ZONE и не предоставите никакой информации о часовом поясе, Oracle по умолчанию использует часовой пояс, равный вашему текущему SESSIONTIMEZONE, который вы установили ранее.

Вы можете установить SESSIONTIMEZONE также с помощью переменной среды ORA_SDTZ или в своем реестре на HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\ORACLE\KEY_{ORACLE_HOME Name}\ORA_SDTZ, соответственно. HKEY_LOCAL_MACHINE\SOFTWARE\ORACLE\KEY_{ORACLE_HOME Name}\ORA_SDTZ

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