Временные таблицы между предложением - включены строки, которые не должны быть?

У меня есть временная таблица SQL Server 2016. Я выполнил запрос, который можно увидеть ниже, вместе с результатами. Мне любопытно, почему включена строка, выделенная зеленым цветом. Значение ValidFrom встречается до даты начала "7/12/2018 19:16:00", а значение ValidTo наступает после даты окончания "7/12/2018 19:30:00".

Мое понимание BETWEEN / AND, которое может быть неверным, состоит в том, что он находит все строки, измененные между двумя моментами времени.

1 ответ

Решение

Предложение BETWEEN во временной таблице показывает те строки, которые были активны в течение выбранного периода времени. В более традиционных терминах строки, которые соответствуют этому критерию, устанавливают:

WHERE StartTime <= <EndDateTime> 
    AND EndTime > <StartDateTime>

Как вы можете видеть, это не требует фактической отметки времени, чтобы попасть в ваши даты между.

Другие вопросы по тегам