Russian Qt Forum
Ноябрь 22, 2024, 18:27 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
  Начало   Форум  WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  

Страниц: [1]   Вниз
  Печать  
Автор Тема: PostgreSQL QT5.4 пересылка данных между двумя базами timestamp  (Прочитано 11157 раз)
Примерный ученик
Бывалый
*****
Offline Offline

Сообщений: 450


И это не всегда помогает


Просмотр профиля
« : Июнь 07, 2020, 09:40 »

Есть две базы. Данные из одной сервер через клиент посылает на другую. Время передается в виде qint64 и устанавливается через
Код:
dt.setMSecsSinceEpoch(time)
И в первой и во второй базе время timestamppz (c привязкой к зоне Москва).
В базах время правильное. Но вот в переменной dt  на 1 час меньше.
PostgreSQL 8.1
Записан

Как мало времени и как много нужно узнать
Пантер
Administrator
Джедай : наставник для всех
*****
Offline Offline

Сообщений: 5876


Жаждущий знаний


Просмотр профиля WWW
« Ответ #1 : Июнь 07, 2020, 12:18 »

Не совсем понял проблему. Ты берешь из одной БД поле, помещаешь его в QDateTime и засовываешь в другую БД этот QDateTime? Можешь немного подробнее расписать? Проблема с таймзонами это довольно частая проблема при проектировании.
Записан

1. Qt - Qt Development Frameworks; QT - QuickTime
2. Не используйте в исходниках символы кириллицы!!!
3. Пользуйтесь тегом code при оформлении сообщений.
Примерный ученик
Бывалый
*****
Offline Offline

Сообщений: 450


И это не всегда помогает


Просмотр профиля
« Ответ #2 : Июнь 07, 2020, 12:48 »

Надо проверять, есть ли такая запись с таким же временем. А как проверять, если время пришедшей записи, приведенное к QDateTime  на данном компьютере отличается от времени, которое в базе на 1 час. Как будет на других компьютерам с другими временными зонами не проверял
Записан

Как мало времени и как много нужно узнать
Примерный ученик
Бывалый
*****
Offline Offline

Сообщений: 450


И это не всегда помогает


Просмотр профиля
« Ответ #3 : Июнь 07, 2020, 12:55 »

В запросе к базе время в формате Qt::ISODate в текстовом виде отличается от реального времени, которое показывает PGAdmin на 1 час
Записан

Как мало времени и как много нужно узнать
Пантер
Administrator
Джедай : наставник для всех
*****
Offline Offline

Сообщений: 5876


Жаждущий знаний


Просмотр профиля WWW
« Ответ #4 : Июнь 07, 2020, 13:02 »

Все равно нифига не понял. Улыбающийся Откуда приходит запись?
Вообще, если ты можешь изменить структуру БД, я преложил бы тебе хранить в ней unixtime в UTC. То есть, int32 поле, куда ты будешь вносить dt.toUtc().toSecsSinceEpoch()
Записан

1. Qt - Qt Development Frameworks; QT - QuickTime
2. Не используйте в исходниках символы кириллицы!!!
3. Пользуйтесь тегом code при оформлении сообщений.
Примерный ученик
Бывалый
*****
Offline Offline

Сообщений: 450


И это не всегда помогает


Просмотр профиля
« Ответ #5 : Июнь 07, 2020, 16:09 »

Я так и сделал. Храню в время в милисекундах, все нормально заработало, так как и сервера и клиенты настроены на Москву.
Записан

Как мало времени и как много нужно узнать
Примерный ученик
Бывалый
*****
Offline Offline

Сообщений: 450


И это не всегда помогает


Просмотр профиля
« Ответ #6 : Июнь 07, 2020, 16:11 »

Только поле int8, так как точность до милисекунд нужна
Записан

Как мало времени и как много нужно узнать
ssoft
Программист
*****
Offline Offline

Сообщений: 584


Просмотр профиля
« Ответ #7 : Июнь 08, 2020, 07:29 »

Я так и сделал. Храню в время в милисекундах, все нормально заработало, так как и сервера и клиенты настроены на Москву.

А почему бы не использовать UTC? Тогда и с локальным временем и настройкой на Москву проблем не будет.
Записан
Примерный ученик
Бывалый
*****
Offline Offline

Сообщений: 450


И это не всегда помогает


Просмотр профиля
« Ответ #8 : Июнь 10, 2020, 15:27 »

Требование заказчика: серверы и клиенты имеют часовой пояс Москвы
Записан

Как мало времени и как много нужно узнать
Пантер
Administrator
Джедай : наставник для всех
*****
Offline Offline

Сообщений: 5876


Жаждущий знаний


Просмотр профиля WWW
« Ответ #9 : Июнь 10, 2020, 16:00 »

Это понятно. Ты держи в базе UTC. а для вывода конвертируй и не будет тебе проблем.. А твой час это скорее всего летнее или зимнее время где-то. Не все компы имеют обновления с последней информацией о часовых поясах.
Записан

1. Qt - Qt Development Frameworks; QT - QuickTime
2. Не используйте в исходниках символы кириллицы!!!
3. Пользуйтесь тегом code при оформлении сообщений.
Примерный ученик
Бывалый
*****
Offline Offline

Сообщений: 450


И это не всегда помогает


Просмотр профиля
« Ответ #10 : Июнь 10, 2020, 18:26 »

Это понятно. Ты держи в базе UTC. а для вывода конвертируй и не будет тебе проблем.. А твой час это скорее всего летнее или зимнее время где-то. Не все компы имеют обновления с последней информацией о часовых поясах.

Это имело бы смысл, если бы в системе не все были в одном часовом поясе.
И да, проблема в машине с Виндой, которая почему то упорно считала, что в России сейчас летнее время. Подправили
Записан

Как мало времени и как много нужно узнать
ssoft
Программист
*****
Offline Offline

Сообщений: 584


Просмотр профиля
« Ответ #11 : Июнь 11, 2020, 14:43 »

Это имело бы смысл, если бы в системе не все были в одном часовом поясе.
И да, проблема в машине с Виндой, которая почему то упорно считала, что в России сейчас летнее время. Подправили

И все-таки стоит прислушаться к опыту других). Храните все в UTC и будет счастье.
Это никак не нарушает желания заказчика и не доставляет лишних проблем для разработчика.
Записан
Примерный ученик
Бывалый
*****
Offline Offline

Сообщений: 450


И это не всегда помогает


Просмотр профиля
« Ответ #12 : Июнь 15, 2020, 07:43 »

На самом деле без разницы, в каком часовом поясе хранить время. Главное ЗНАТЬ И ВВОДИТЬ поправку к текущему поясу.
Записан

Как мало времени и как много нужно узнать
Пантер
Administrator
Джедай : наставник для всех
*****
Offline Offline

Сообщений: 5876


Жаждущий знаний


Просмотр профиля WWW
« Ответ #13 : Июнь 15, 2020, 08:03 »

Нуу, не совсем... Врем на компе могут менять. Опять же, переход на зимнее или летнее... Вот узнай потом какое время было на компе год назад когда добавляли запись. А если хранить в UTC то становится пофиг на это вот все.
Записан

1. Qt - Qt Development Frameworks; QT - QuickTime
2. Не используйте в исходниках символы кириллицы!!!
3. Пользуйтесь тегом code при оформлении сообщений.
Примерный ученик
Бывалый
*****
Offline Offline

Сообщений: 450


И это не всегда помогает


Просмотр профиля
« Ответ #14 : Июнь 23, 2020, 15:24 »

актуальность данных максимум неделя, все серверы синхронизируются по NTP от ведущего сервера. Ну а на будущее, согласен, Гринвич рулит.
Записан

Как мало времени и как много нужно узнать
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


Страница сгенерирована за 0.208 секунд. Запросов: 23.