Уведомления

Группа в Telegram: @pythonsu
  • Начало
  • » Python для новичков
  • » Как получить время из PostgreSQL в том же самом часовом поясе, в котором и было изначально загружено в БД, вместо UTC? Используется "aware" тип времени. [RSS Feed]

#1 Окт. 29, 2015 21:30:31

TitanFighter
Зарегистрирован: 2015-06-23
Сообщения: 99
Репутация: +  0  -
Профиль   Отправить e-mail  

Как получить время из PostgreSQL в том же самом часовом поясе, в котором и было изначально загружено в БД, вместо UTC? Используется "aware" тип времени.

Добрый день.

Помогите пожалуйста по проблеме следующего характера:
- Есть данные, которые через Джангу загружаются в базу в формате “2015-10-31 17:00:00+03” (aware форма времени).
- PostgreSQL имеет свойство сохранять время в UTC.
- В pgAdmin-е я вижу время не в UTC, а в том виде, в котором было изначально загружено значение, т.е. “2015-10-31 17:00:00+03”.

К примеру я загружаю новые данные, но перед заливкой в БД нужно сравнить эти данные со значениями, которые уже есть в БД. Новая порция идет в формате "2015-10-31 17:00:00+03“, а значения из БД вытягиваются уже в UTC, т.е. ”2015-10-31 14:00:00+00".
Как сделать так, чтоб значение вытягивалось из БД не в UTC, а в том же часовом поясе, в котором и было залито?

Как я понимаю, если pgAdmin мне показывает время в залитом часовом поясе, а не в UTC, то и вытянуть как то из БД можно в том же самом часовом поясе?

test = Shows.objects.get(name='Test')
test.date_time # выдает в UTC, а нужно чтоб было +3

П.С Хардкодить нельзя. Нужно получать именно тот часовой пояс из БД, что и был залит изначально со значением, так как заливаться значения могут с разным часовым поясом.

Спасибо.

Отредактировано TitanFighter (Окт. 29, 2015 21:42:57)

Офлайн

#2 Окт. 29, 2015 21:40:41

ZerG
Зарегистрирован: 2012-04-05
Сообщения: 2627
Репутация: +  61  -
Профиль   Отправить e-mail  

Как получить время из PostgreSQL в том же самом часовом поясе, в котором и было изначально загружено в БД, вместо UTC? Используется "aware" тип времени.

посмотрите в сторону
http://www.saltycrane.com/blog/2009/05/converting-time-zones-datetime-objects-python/



Влодение рускай арфаграфией - это как владение кунг-фу: настаящие мастира не преминяют ево бес ниабхадимости

Офлайн

#3 Окт. 29, 2015 21:46:35

TitanFighter
Зарегистрирован: 2015-06-23
Сообщения: 99
Репутация: +  0  -
Профиль   Отправить e-mail  

Как получить время из PostgreSQL в том же самом часовом поясе, в котором и было изначально загружено в БД, вместо UTC? Используется "aware" тип времени.

ZerG
Я pytz-ом пользуюсь, добавляя часовой пояс значениям, которые заливаются в БД. В ссылке, что вы указали (и я на просторах инета сам находил), как конвертировать значение из UTC в нужный часовой пояс. Мне такое не подходит, так как в БД заливаются даты\время с разными часовыми поясами. Мне нужно именно вытянуть часовой пояс из сохраненного в БД значения, который перед заливкой имел “aware”-тип, т.е. тип datetime с указанным часовым поясом.

Как сейчас происходит:
Мое_время_+3 -> БД Время_UTC+указывается Часовой Пояс
Мне нужно получить все то же самое в обратном порядке, вместо того, как сейчас происходит:
Мое_время_UTC (Без +3) <- БД Время_UTC+указывается Часовой Пояс

Отредактировано TitanFighter (Окт. 29, 2015 21:51:58)

Офлайн

#4 Ноя. 2, 2015 23:47:59

TitanFighter
Зарегистрирован: 2015-06-23
Сообщения: 99
Репутация: +  0  -
Профиль   Отправить e-mail  

Как получить время из PostgreSQL в том же самом часовом поясе, в котором и было изначально загружено в БД, вместо UTC? Используется "aware" тип времени.

Как выяснилось, нету таки возможности вытягивать из БД часовой пояс, который используется внутри данных “дата\время” при записи в БД. Часовой пояс, что используется в “дате\времени” дает только возможность Базе Данных правильно перевести записываемое значение в UTC.

Чтобы из БД получить время не в локальном часовом поясе (там где юзер находится), а в часовом поясе, к которому изначально относятся данные (концерт в другой стране\городе, и нужно знать время начала концерта не по локальному времени юзера, а именно по времени места проведения концерта), нужно в БД добавлять колонку и записывать в нее название часового пояса (аля ‘Europe/Paris’), к которому относится событие и как указано в ссылке выше от ZerG-а, проводить конвертирование.

Офлайн

  • Начало
  • » Python для новичков
  • » Как получить время из PostgreSQL в том же самом часовом поясе, в котором и было изначально загружено в БД, вместо UTC? Используется "aware" тип времени.[RSS Feed]

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version