Как преобразовать строку формы «YYYY-DD-MM HH: MI: SS.MS +00: 00», где последние четыре символа являются смещением часового пояса в timestamptz postgres?

Оператор == проверяет, указывают ли две ссылки на один и тот же объект или нет. .equals() проверьте фактическое содержимое строки (значение).

Обратите внимание, что метод .equals() принадлежит классу Object (суперкласс всех классов). Вам необходимо переопределить его в соответствии с вашим требованием к классу, но для String оно уже реализовано и проверяет, имеет ли две строки одно и то же значение.

  • Случай 1
    String s1 = "Stack Overflow";
    String s2 = "Stack Overflow";
    s1 == s2;      //true
    s1.equals(s2); //true
    
    Причина: строка литералы, созданные без нуля, хранятся в пуле строк в области перментонов кучи. Таким образом, оба s1 и s2 указывают на один и тот же объект в пуле.
  • Случай 2
    String s1 = new String("Stack Overflow");
    String s2 = new String("Stack Overflow");
    s1 == s2;      //false
    s1.equals(s2); //true
    
    Причина. Если вы создаете объект String с использованием ключевого слова new, ему выделяется отдельное пространство в куче.
-2
задан Jerry Asher 13 July 2018 в 10:57
поделиться

1 ответ

Выход правильный. Тип timestamp with time zone немного вводит в заблуждение, и поведение отличается от, например, в Oracle.

цитата из руководства

Для отметки времени с часовым поясом внутренне сохраненное значение всегда находится в формате UTC (Universal Coordinated Time, традиционно называемом Среднее время по Гринвичу, GMT). Входное значение, которое имеет указанный явный часовой пояс, преобразуется в UTC с использованием соответствующего смещения для этого часового пояса.

Вход '2018-06-13 04:11:46.873 -07:00'::timestamptz преобразуется в соответствующее значение UTC в зависимости от времени заданное смещение зоны. Значение затем преобразуется в часовой пояс вашего сеанса и отправляется клиенту, что затем приводит к 2018-06-13 11:11:46.873+00 в часовом поясе вашей сессии.

1
ответ дан a_horse_with_no_name 17 August 2018 в 13:06
поделиться
Другие вопросы по тегам:

Похожие вопросы: