处理日期和时间数据--过滤日期范围

  如果要过滤日期范围(比如,整年或整月),比较自然的方法就是使用YEAR和MONTH之类的函数。例如,以下查询返回2007年中生成的所有订单:

1 SELECT orderid,custid,empid,orderdate
2   FROM Sales.Orders
3 WHERE YEAR (orderdate) = 2007 ;

  不过,应该小心的一点是:在大多数情况下,当对过滤条件中的列应用了一定的处理后,就不能以有效的方式来使用索引了。为了潜在地有效利用索引,就需要对谓词进行调整,以便对过滤条件中的列不进行处理,如下所示:

1 SELECT orderid,custid,empid,orderdate
2 FROM Sales.Orders
3 WHERE orderdate >= ' 20070101 ' AND orderdate < ' 20080101 ' ;

  类似地,不应该使用函数来过滤某个月生成的订单,如下所示:

1 SELECT orderid,custid,empid,orderdate
2 FROM Sales.Orders
3 WHERE YEAR (orderdate) = 2007 AND MONTH (orderdate) = 2 ;

  而应该使用一个范围过滤条件,如下所示:

1 SELECT orderid,custid,empid,orderdate
2 FROM Sales.Orders
3 WHERE orderdate >= ' 20070201 ' AND orderdate < ' 20070301 ' ;

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值