Уточните, в каком случае строка засчитывается? Если диапазоны пересекаются или если диапазон строки полностью внутри диапазона запроса?
Если время начала события пересекается с существующим интервалом в таблице.
То, что вы сказали, звучит скорее как WHERE '2021-12-17 15:35:42.382746' between datetimestart and datetimestop А не работает не знаю почему, может потому что одни сущности имею тип timestamp, a другие timstamptz или text... типов не видно
Ага. Если указать вторым значением datetimestop, то все заработало. В моем случае выводились все строки. Кажется, что это решило мою крайне глупую проблему. Я еще проверю на разных данных, но все равно спасибо!
А если диапазон не был завершен, то годится ли такой вариант: where '2021-12-17 15:35:00' between datetimestart and case when datetimestop is null then now() + interval '1 hour' else datetimestop end;?
Нормально. Хотя логичнее case сократить до coalesce(datetimestop, now() + interval '1 hour')
Обсуждают сегодня