Я сомневаюсь, что утверждение выполняется в EnterpriseDB:
select count(*)
from cdar_cpms_owner.hshldgrp_wkly_actvty s
where s.wk_id between (extract(isoyear from now()-interval '9 week')
|| trim(to_char(extract(week from now()-interval '9 week'),'09')))::numeric
and s.wk_id > (extract(isoyear from now()-interval '2 week')
|| trim(to_char(extract(week from now()-interval '2 week'),'09')))::numeric;
Если это так, то EnterpriseDB имеет серьезную проблему, поскольку это утверждение не имеет никакого смысла. Если вы разрешите только манипуляции с датой, используя 19-апрель-2020 как дату, вы сократите оператор до:
select count(*)
from cdar_cpms_owner.hshldgrp_wkly_actvty s
where s.wk_id between 202007 and s.wk_id > 202014;
Но при условии, что wk_id - это число c подвыражение "s.wk_id> 202014 "производит логическое значение, и результирующее где становится:
where s.wk_id between a numeric and a boolean
И это ЕСТЬ или, по крайней мере, должно быть недействительным. Возможно, ошибка была обнаружена и исправлена в одной среде, но не в другой.
Решение удалите "s.wk_id>" из фазы AND предложения Между:
select count(*)
from cdar_cpms_owner.hshldgrp_wkly_actvty s
where s.wk_id between (extract(isoyear from now()-interval '9 week')
|| trim(to_char(extract(week from now()-interval '9 week'),'09')))::numeric
and (extract(isoyear from now()-interval '2 week')
|| trim(to_char(extract(week from now()-interval '2 week'),'09')))::numeric;
BTW get Год ISO и неделю ISO можно получить напрямую с помощью to_char в формате «iyyyiw». Таким образом, запрос становится (IMHO) более понятным (хотя я допускаю, что формат изначально выглядит странно):
select count(*)
from cdar_cpms_owner.hshldgrp_wkly_actvty s
where s.wk_id between to_char(now()-interval '9 week','iyyyiw')::numeric
and to_char(now()-interval '2 week','iyyyiw')::numeric;