все с 6:19 до 18:20 (минутный интервал)
Представленная здесь проблема не только техническая, но и языковая.Слово «между» может иметь несколько тонких отличий, таких как вождение между воротами (то есть, надеюсь, что автомобиль не врезается ни в одну из сторон, и поэтому в него не входит столб), либо полет между Лондоном иПариж , в который включены оба города, в противном случае вы не достигли конечного пункта.
В стандартах SQL используется последний подход между ними, он определяется как включающий обе конечные точки.Это потенциальная проблема для диапазонов даты / времени, так как это может привести к двойному счету конечных точек.Как @mathguy указывает в своем превосходном комментарии к этому вопросу, более строгий подход состоит в том, чтобы избегать использования между и явно определять диапазон следующим образом:
WHERE h.creation_time >= to_date('2017-01-01', 'YYYY-MM-DD')
AND h.closed_time >= to_date('2018-12-16 18:19:00', 'YYYY-MM-DD HH24:MI:SS')
AND h.closed_time < to_date('2018-12-16 18:20:00', 'YYYY-MM-DD HH24:MI:SS')
ЕСЛИ столбец closed_time
являетсяdate
тип данных используется to_date()
ЕСЛИ столбец closed_time
имеет тип данных timestamp
, используйте to_timestamp()
вместо.