日期处理疑难解答:
原因:
判断上述低效的依据主要是数据的扫描的方式,当查询的表上没有任何索引的情况下,对于数据的查询是全表扫描,上述条件没有任何问题
但是查询的日期字段上有索引时,上述查询一般会降低查询效率,因为上述事例中的查询,或多或少都在查询字段上作了计算,这就意味着
必须对每条纪律的查询字段作计算。并判断就算结果得值是否与条件匹配,从而确定是否满足条件,如果通过索引查询的话,最坏的情况是
全部纪录满足查询条件,这种情况下数据检索时间是索引的时间加表的检索时间。这和显然别直接检索表的时间开销还大。
上述结果是如何处理的:
在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天。