Я очень новичок в использовании диапазонов даты и времени, и после просмотра документации я не понимаю, почему следующий простой запрос не работает так, как я ожидал:
продолжительности жизни = DateTimeRangeField
select id, lifespan
from companyfeatures
where lifespan && TSTZRANGE('1 Mar 2020', '1 May 2020')
Я ожидал, что результатом будут только те записи, срок жизни которых находится в промежутке между «1 марта 2020 года» и «1 мая 2020 года» - однако результаты включают записи с продолжительностью жизни NULL.
Может помогите или объясните, где я ошибаюсь?
Редактировать: Спасибо @a_horse_with_no_name - После еще нескольких копий выясняется, что поле продолжительности жизни ранее было заполнено пустыми или диапазонами по умолчанию ie DateTimeTZRange (Нет, Нет, '()') - поэтому они не равны нулю. Очень грязно, и я не могу изменить это (на данном этапе). Таким образом, я ищу способ найти совпадение (иметь общие точки) с моими указанными c диапазонными датами и игнорировать «пустые» даты? Вы можете помочь?
dbfiddle