日期:2014-05-19  浏览次数:20510 次

比较日期,请问哪种方法比较好?
数据库中有一datetime类型的字段dt,经常要用这个字段来查询(如按年,按月,按周)等.
如查询7月,据我所知,有如下几种方法,请问哪种好一些?还有没有其它方法?
1:where   year(dt)=2007   and   month(dt)=7
2:where   convert(nvarhcar(7),dt,23)= '2007-7 '
3:where   dt> = '2007-7-1 '   and   dt= < '2007-7-31 '
这些是不是都不会用到索引?
还有按月汇总,我是用   group   by   month(dt)   ?
还望达人指点!
谢谢!


------解决方案--------------------
1:where year(dt)=2007 and month(dt)=7
2:where convert(nvarhcar(7),dt,23)= '2007-7 '
3:where dt> = '2007-7-1 ' and dt= < '2007-7-31 '
无论从哪个角度,都只有3是最好的,不过好像应该这么写
where dt> = '2007-7-1 ' and dt < '2007-8-1 '
------解决方案--------------------
3是会用到索引的

按月汇总,可以用 group by month(dt)