日期处理疑难解答:

 原因:

判断上述低效的依据主要是数据的扫描的方式,当查询的表上没有任何索引的情况下,对于数据的查询是全表扫描,上述条件没有任何问题

但是查询的日期字段上有索引时,上述查询一般会降低查询效率,因为上述事例中的查询,或多或少都在查询字段上作了计算,这就意味着

必须对每条纪律的查询字段作计算。并判断就算结果得值是否与条件匹配,从而确定是否满足条件,如果通过索引查询的话,最坏的情况是

全部纪录满足查询条件,这种情况下数据检索时间是索引的时间加表的检索时间。这和显然别直接检索表的时间开销还大。


上述结果是如何处理的:
  在sql server的处理中,日期和字符串是要求使用字符串边界符(默认为单引号')可以通过set
  quoted_identified选择重新设置)作为日期数据的标识符,2005-3-11没有使用边界符,那么
  sqlserver将作为一个表达式处理,很显然作为表达式处理,结果为1991.
  sqlserver以1900年1月1日作为基础日期,1905-06-15 00:00:00.000就是自1900年1月1日
  之后的1991天。

原文地址:https://www.cnblogs.com/wequst/p/1290013.html