首页 > 解决方案 > 子句之间的临时表 - 包含不应该包含的行?

问题描述

我有一个 SQL Server 2016 时态表。我执行了一个可以在下面看到的查询以及结果。我很好奇为什么包含以绿色突出显示的行。ValidFrom 值出现在“2018 年 7 月 12 日 19:16:00”的开始日期之前,而 ValidTo 出现在“2018 年 7 月 12 日 19:30:00”的结束日期之后。

我对 BETWEEN / AND 的理解可能是不正确的,它会发现在两个时间点之间修改的所有行。

在此处输入图像描述

标签: sql-servertemporal-tables

解决方案


时态表上的 BETWEEN 子句显示在选定时间范围内处于活动状态的那些行。用更传统的术语来说,满足此条件的行集:

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

如您所见,这不需要实际的时间戳在您的 BETWEEN 日期内。


推荐阅读