powered by simpleCommunicator - 2.0.53     © 2025 Programmizd 02
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / datetime + interval
6 сообщений из 6, страница 1 из 1
datetime + interval
    #39867752
HobbytF
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Доброго дня!

Задача тривиальная, но никак не получается ее решить.
В таблице 2 поля:
saletime timestamp (без timezone)
timezone int8

Структура таблицы стороннего разработчика, поэтому я не знаю, почему сразу не учли TZ.

Необходимо получить saletime с учетом TZ.
Видимо необходимо использовать interval.
Запрос работает правильно:
Код: sql
1.
select saletime + interval '2 hours' from table;


А как привести к работающему виду запрос?
Код: sql
1.
select saletime + interval timezone || ' hours' from table;


Может есть какое-то простое стандартное решение?
...
Рейтинг: 0 / 0
datetime + interval
    #39867761
Melkij
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
HobbytF,

Код: sql
1.
saletime + timezone * interval '1 hour'
...
Рейтинг: 0 / 0
datetime + interval
    #39867822
HobbytF
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Melkij,

Большое спасибо.
Однако, сформулировав подзадачу, я надеялся решить всю задачу, но опять же не выходит.

В результате этого
Код: sql
1.
saletime + timezone * interval '1 hour'


получаем TIMESTAMP.
TSRANGE вроде тоже использует TIMESTAMP'ы. Но такое условие не работает:

Код: sql
1.
where saletime <@ tsrange (TIMESTAMP '2019-09-27 10:00:00' + timezone*interval '1 hours', TIMESTAMP '2019-09-27 10:10:00' + timezone*interval '1 hours', '[)')


Хотя если убрать timezone * , то работает.
...
Рейтинг: 0 / 0
datetime + interval
    #39867833
Melkij
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
HobbytF,

а зачем вам tsrange здесь? Сделайте просто between.

Ну и с timestamp у меня работает тоже. С timestamptz - нет, жалуется на отсутствие оператора timestamp with time zone <@ tsrange
...
Рейтинг: 0 / 0
datetime + interval
    #39867856
HobbytF
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Melkij,

Что-то я совсем запутался.
C BETWEEN ситуация аналогичная

Такая штука работает, но без учета TZ
Код: sql
1.
where (saletime between '2019-09-27 10:00:00'::TIMESTAMP + interval '1 hours' and '2019-09-27 10:10:00'::TIMESTAMP + interval '1 hours' )



А такая штука не работает:
Код: sql
1.
where (saletime between '2019-09-27 10:00:00'::TIMESTAMP + timezone * interval '1 hours' and '2019-09-27 10:10:00'::TIMESTAMP + timezone * interval '1 hours' )


Оператор с данными именем и типами аргументов не найден. Возможно, вам следует добавить явные приведения типов.

Если не сложно, напишите, напишите правильный синтаксис.
...
Рейтинг: 0 / 0
datetime + interval
    #39867861
HobbytF
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Melkij,

Я нашел проблему. timezone был varchar.
Большое спасибо за помощь.
...
Рейтинг: 0 / 0
6 сообщений из 6, страница 1 из 1
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / datetime + interval
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]