Как заменить фиксированную дату на дату Dynami c в предложении WHERE? - PullRequest
0 голосов
/ 14 июля 2020
select concat(CURRENT_DATE, ' ', '00:00:00+02:00')

возвращает "2020-07-14 00:00:00+02:00"

Я могу скопировать и вставить этот результат в свое предложение WHERE:

where (xyz between timestamp with time zone '2020-06-01 00:00:00+02:00' 
and timestamp with time ZONE 2020-07-14 00:00:00+02:00

, и он работает, но если я использую больше динамики c конструкция concat(CURRENT_DATE, ' ', '00:00:00+02:00') вместо:

where (xyz between timestamp with time zone '2020-06-01 00:00:00+02:00' 
and timestamp with time ZONE concat(CURRENT_DATE, ' ', '00:00:00+02:00')

Я получаю синтаксическую ошибку:

ОШИБКА: синтаксическая ошибка в строке «concat» или рядом с ней. СТРОКА 57: ... 6 -01 00: 00: 00 + 02: 00 'и отметка времени со временем ZONE concat (CUR ...

Почему первое предложение WHERE работает, а другое - нет, даже если оно печатается одинаково дата в том же формате?

1 Ответ

2 голосов
/ 14 июля 2020

Вы можете использовать at time zone:

where xyz between ('2020-06-01'::date at time zone '+02:00') and (current_date at time zone '+02:00')
...