Как знать часовой пояс метки времени в postgresql 8.3

Исключением, с которым мы столкнулись, было не на локальном, а на удаленном сервере, Azure CI читал его из папки пакетов, но упомянутые выше версии компилятора не были найдены.

Чтобы исправить это мы изменили файл проекта, чтобы сделать его чем-то вроде

. Он не ссылается ни на один из пакетов здесь, непосредственно ссылающийся на переменные среды.

Это исправило проблему, однако в наших случаях мы надеемся 't использовать пакеты непосредственно из "package.config", вместо этого у нас есть отдельная папка для поддержания целостности версий между командами.

15
задан egesuato 16 February 2009 в 16:09
поделиться

3 ответа

Я предполагаю, что у Вас есть столбец, названный ct, который имеет тип TIMESTAMPTZ в таблице t. Затем можно использовать:

SELECT EXTRACT(TIMEZONE FROM ct) FROM t;

для получения смещения часового пояса в секундах. Это, который дает Вам 3600 от UTC / GMT, который означает любой GMT+1, CET или что бы то ни было. Возвращенное значение зависит от Вашего TIMEZONE установка.

Образец (я живу в Германии, фактическом часовом поясе ist GMT+1 / CET):

test=# select '2008-01-01 12:00:00 GMT+5'::timestamptz;
      timestamptz       
------------------------
 2008-01-01 18:00:00+01

test=# set timezone to 'gmt';
SET
test=# select '2008-01-01 12:00:00 GMT+5'::timestamptz;
      timestamptz       
------------------------
 2008-01-01 17:00:00+00

, Как Вы видите, это всегда производит что-либо в настроенном часовом поясе. Так смещение Вы доберетесь с [1 113], зависит от Вашего TIMEZONE установка. Часовой пояс, который был дан на [1 115], потерян, потому что это не стоит сохраняться. Вещь, которая количества - то, что все корректно и это не должно зависеть от TIMEZONE установка. PostgreSQL делает это очень хорошо.

18
ответ дан 30 November 2019 в 12:27
поделиться

"PostgreSQL делает это очень хорошо".

Мне действительно нравится PostgreSQL, но в этой конкретной функции он не делает этого хорошо. Часовой пояс не только смещается к Часовому поясу GMT, трудно к политическим правилам, который подразумевает переход на летнее время. Как существует много часовых поясов с тем же смещением и различными правилами перехода на летнее время - когда PG забывает об исходном часовом поясе, она освобождает информацию на самом деле.

Лично я храню исходный часовой пояс отдельно для дат, он имеет значение в форме 'America/New_York'. Если у кого-либо есть лучшее решение - это приветствуется.

9
ответ дан 30 November 2019 в 12:27
поделиться

Так как timestampz записывается для момента времени в формате ZULU / GMT, который никогда не меняет его смещение (поскольку это ссылка), нет необходимости записывать часовой пояс. Вам нужно только добавить / вычесть смещение к смещению ГЕОПОЛИТИЧЕСКОГО часового пояса в ПРОШЛОЕ, НАСТОЯЩЕЕ или БУДУЩЕЕ.

Вам ДЕЙСТВИТЕЛЬНО необходимо знать точный ГЕОПОЛИТИЧЕСКИЙ ЧАСОВОЙ ПОЯС, действующий в том месте, к которому применяется время, в настоящий момент применяется для ПРОШЛОГО и НАСТОЯЩЕГО целей.

Для будущих случаев во времени это становится может быть, более проблематично. Однако он все равно должен работать. Подумайте о закате. Если в каком-то месте на Земле есть закат в полночь по времени ZULU (где-то над Атлантическим океаном или от Северной Канады до Аляски зимой в Северном полушарии), и это время предполагается равным 8 часам вечера (-4: 00 смещение) в этом месте в тот момент, когда вы записываете его в систему и записываете как «зима-дата-в-будущем 8:00 PM», оно будет записано в базе данных как 24:00 GMT.

Сейчас , это место на Земле вызывает недоумение и недоумевает при исчислении времени, связанном с географией, и называет свой часовой пояс - «+11: 55». Так что для них, когда в Англии полночь (полночь по Гринвичу), они ХОТЯТ назвать это 11:55 утра, полностью их выбор. Когда любой компьютер хочет отобразить эту дату в будущем для этого местоположения (то есть в этом геополитическом часовом поясе), он будет называть это 11:55 утра, даже если солнце садится. И конечно же, это БУДЕТ день ВПЕРЕД тем, как вы это запланировали :-) Их проблема.

00 GMT в базе данных.

Так вот, это место на Земле встает дыбом и трясет носом при географическом исчислении времени и называет свой часовой пояс - «+11: 55». Так что для них, когда в Англии полночь (полночь по Гринвичу), они ХОТЯТ назвать это 11:55 утра, полностью их выбор. Когда любой компьютер хочет отобразить эту дату в будущем для этого местоположения (то есть в этом геополитическом часовом поясе), он будет называть это 11:55 утра, даже если солнце садится. И конечно же, это БУДЕТ день ВПЕРЕД тем, как вы это запланировали :-) Их проблема.

00 GMT в базе данных.

Так вот, это место на Земле встает дыбом и трясет носом при географическом исчислении времени и называет свой часовой пояс - «+11: 55». Так что для них, когда в Англии полночь (полночь по Гринвичу), они ХОТЯТ назвать это 11:55 утра, полностью их выбор. Когда какой-либо компьютер хочет отобразить эту дату в будущем для этого местоположения (то есть этого геополитического часового пояса), он будет называть это 11:55 утра, даже если солнце садится. И конечно же, это БУДЕТ день ВПЕРЕД тем, как вы это запланировали :-) Их проблема.

Когда какой-либо компьютер хочет отобразить эту дату в будущем для этого местоположения (то есть этого геополитического часового пояса), он будет называть это 11:55 утра, даже если солнце садится. И конечно же, это БУДЕТ день ВПЕРЕД тем, как вы это запланировали :-) Их проблема.

Когда любой компьютер хочет отобразить эту дату в будущем для этого местоположения (то есть в этом геополитическом часовом поясе), он будет называть это 11:55 утра, даже если солнце садится. И конечно же, это БУДЕТ день ВПЕРЕД тем, как вы это запланировали :-) Их проблема.

0
ответ дан 30 November 2019 в 12:27
поделиться
Другие вопросы по тегам:

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