Преобразование TIMESTAMP в DATE по отношению к часовому поясу - PullRequest
0 голосов
/ 06 декабря 2018

Я проверял, как ДАТЫ хранятся в базе данных.Рассмотрим следующий оператор:

SELECT
CAST (to_timestamp_tz('2018-12-05T10:00:00+01:00', 'YYYY-MM-DD"T"HH24:MI:SSTZH:TZM') AS DATE) AS PRAGUE_TIME,
CAST (to_timestamp_tz('2018-12-05T10:00:00+00:00', 'YYYY-MM-DD"T"HH24:MI:SSTZH:TZM') AS DATE) AS GMT_TIME
FROM DUAL

Результат:

PRAGUE_TIME          GMT_TIME
2018-12-05 10:00:00  2018-12-05 10:00:00

Время одинаковое, несмотря на то, что оно было создано из смещения часового пояса +1.Просто чтобы быть уверенным, я добавил дальнейшее преобразование в строку:

SELECT
TO_CHAR(CAST (to_timestamp_tz('2018-12-05T10:00:00+01:00', 'YYYY-MM-DD"T"HH24:MI:SSTZH:TZM') AS DATE),'YYYY-MM-DD HH24:MI:SS') AS PRAGUE_TIME,
TO_CHAR(CAST (to_timestamp_tz('2018-12-05T10:00:00+00:00', 'YYYY-MM-DD"T"HH24:MI:SSTZH:TZM') AS DATE),'YYYY-MM-DD HH24:MI:SS') AS GMT_TIME
FROM DUAL


PRAGUE_TIME          GMT_TIME
2018-12-05 10:00:00  2018-12-05 10:00:00

Те же результаты.Так как же я могу преобразовать TIMESTAMP в DATE без потери информации о часовом поясе?

1 Ответ

0 голосов
/ 06 декабря 2018

как я могу преобразовать TIMESTAMP в DATE без потери информации о часовом поясе?

Вы не можете.

  • A DATE имеет толькокомпоненты года, месяца, дня, часа, минуты и секунды.
  • A TIMESTAMP содержит все эти компоненты плюс наносекунды и, необязательно, компоненты смещения часового пояса или часового пояса.

Если выпреобразовать из TIMESTAMP в DATE, тогда вы потеряете информацию, которую DATE не может сохранить.

Что вы можете сделать, это преобразовать все TIMESTAMP в один и тот же часовой пояс, используя,например, AT TIME ZONE 'UTC':

SELECT CAST( TIMESTAMP '2018-12-05 10:00:00+01:00' AT TIME ZONE 'UTC' AS DATE )
         AS PRAGUE_TIME_AS_UTC,
       CAST( TIMESTAMP '2018-12-05 10:00:00+00:00' AT TIME ZONE 'UTC' AS DATE )
         AS GMT_TIME_AS_UTC
FROM   DUAL

Результаты :

|   PRAGUE_TIME_AS_UTC |      GMT_TIME_AS_UTC |
|----------------------|----------------------|
| 2018-12-05T09:00:00Z | 2018-12-05T10:00:00Z |
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...