临时表是SQL Server 2016
及更高版本中的一项新功能,就像SQL Server
自动将数据历史记录保留在表中的一种有趣方式一样。 SQL Server 2016
中引入了一些新的T-SQL语法来支持临时表。我遇到了其中一些误会。
在official documentation中,BETWEEN <start_date_time> AND <end_date_time>
的描述如下:
与上述在FOR SYSTEM_TIME FROM中相同 描述,除了返回的行表 包括在由定义的上边界上变为活动的行 端点。
和CONTAINED IN (<start_date_time>, <end_date_time>)
的描述如下:-
返回一个表,其中包含已打开的所有行版本的值 并在两个datetime定义的指定时间范围内关闭 CONTAINED IN参数的值。精确变为活动状态的行 在下边界或完全停止在上边界活动 边界。
所以我了解到,CONTAINED IN (@start,@end)
和BETWEEN
子句之间的唯一区别是CONTAINED IN (@start, @end)
包括@start边界,而BETWEEN
子句没有。我说的对吗?
答案 0 :(得分:2)
在this文章中,@Ameena Lalani解释并演示了搜索时态表的各种选项,并很好地解释了这些,确保您阅读了整篇文章。
简要总结一下:
FROM <start_datetime> TO <end_datetime>
BETWEEN <start_datetime> AND <end_datetime>
CONTAINED IN (start_datetime, end_datetime)
这是该文章的屏幕截图: