изменить формат даты postgres - PullRequest
       4

изменить формат даты postgres

1 голос
/ 21 февраля 2011

Есть ли способ изменить формат даты по умолчанию в Postgres?

Обычно, когда я запрашиваю базу данных Postgres, даты выдаются в виде гггг-мм-дд чч: мм: сс + тц, как 2011-02-21 11: 30: 00-05.

Но у одной конкретной программы даты выходят: гггг-мм-дд чч: мм: сс.с, то есть часовой пояс отсутствует, и он показывает десятые доли секунды.

Очевидно, что-то меняет формат даты по умолчанию, но я не знаю, что и где. Я не думаю, что это параметр конфигурации на стороне сервера, потому что я могу получить доступ к той же базе данных с помощью другой программы и получить формат с часовым поясом.

Я забочусь, потому что он, кажется, игнорирует мои вызовы "установить часовой пояс" в дополнение к изменению формата. Все времена выходят EST.

Дополнительная информация:

Если я напишу «выберите дату из таблицы», я получу формат «нет часового пояса». Но если я напишу «select to_char (somedate :: timestamptz, 'yyyy-mm-dd hh24: mi: ss-tz')», тогда часовые пояса будут работать так, как я ожидал.

Для меня это действительно звучит так, как будто что-то устанавливает все метки времени неявно как "to_char (date :: timestamp, 'yyyy-mm-dd hh24: mi: ss.m')". Но я не могу найти в документации ничего о том, как бы я это сделал, если бы захотел, и не могу найти ничего в коде, который, кажется, делает это. Хотя, поскольку я не знаю, что искать, это мало что доказывает.

Неважно: '(

Я нашел свою проблему. Я думал, что смотрю прямо на строку, возвращаемую из базы данных. Но я упустил из виду, что он считывал его как метку времени, а затем преобразовывал метку времени в строку. Это было скрыто внутри функции getString, которая меня отбросила. Я думал, что это ResultSet.getString, но на самом деле это была наша собственная функция с тем же именем. К сожалению. Какой идиот написал эту функцию ?! О, это был я ...

Спасибо всем, кто пытался помочь. Я дам вам голос за ваши неприятности.

Ответы [ 3 ]

2 голосов
/ 21 февраля 2011

С каким клиентом вы используете операторы select?Форматирование вывода является обязанностью приложения, поэтому, не зная, какое приложение вы используете для отображения данных, трудно сказать.

Предполагая, что вы используете psql, вы можете изменить формат даты с помощью команды SET:http://www.postgresql.org/docs/current/static/sql-set.html

По сути, это способ изменить параметры конфигурации.Те, которые отвечают за форматирование данных, описаны здесь:http://www.postgresql.org/docs/current/static/runtime-config-client.html#RUNTIME-CONFIG-CLIENT-FORMAT

2 голосов
/ 21 февраля 2011

Я считаю, что столбцы таблицы указаны по-разному.Попробуйте следующие варианты:

timestamp
timestamp(0)   no millis
timestamptz    with timezone
timestamptz(0) with timezone, no millis
0 голосов
/ 23 февраля 2011

Даниэль говорит мне опубликовать мои выводы в качестве ответа и принять его, чтобы закрыть вопрос.Хорошо.

Я обнаружил, что формат даты, который я видел, который не включал часовой пояс, не был тем, что приходил непосредственно из Postgres, но что я пропустил пару вызовов функций, которые преобразовали входящиедата для java.util.Timestamp, а затем из java.util.Timestamp в строку.Именно в этом преобразовании из метки времени в строку часовой пояс по умолчанию переходит в EST.

В моей собственной скромной защите моя ошибка не была настолько глупой, как это может показаться.: -0 У нас было выполнение запроса в подклассе, который считывает результаты в список, что мы делаем, чтобы разрешить изменение результатов запроса перед выводом.(В этом случае мы добавляем пару столбцов, которые получены из сохраненных столбцов.) Затем у нас есть набор функций, которые напоминают функции JDBC для извлечения данных из списка, поэтому вызывающая программа может легко переключиться с обработки.запрос непосредственно к обработке списка.Когда я боролся с проблемой формата даты, меня просто не замечало, что я смотрю не на «настоящий JDBC», а на «симулированные вызовы JDBC».

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