日期函数之Dateadd、Datediff

1.Dateadd 和 Date diff 经常混合使用
Dateadd(year/month/day,n,指定日期)
Datediff(year/month/day,start_date,end_date)

求某年/某月的第一天
Select dateadd(year/month,
datediff(year/month,’20000101’,getdate()),’20000101’);
20000101作为锚点日期,是以某年某月的第一天

求某年/某月的最后一天
Select dateadd(year/month,
datediff(year/month,’19991231’,getdate()),’19991231’);
19991231作为锚点日期,是以某年某月的最后一天
2.YEAR,MONTH,DAY
分别返回指定日期的年、月、日

过滤日期范围(比如整年或正月),比较自然的方法使用year函数和month函数

查询返回2008年生成的所有订单
select orderid,custid,orderdate
from sales.orders
where year(orderdate)=2008;

但是在大多数情况下,当对过滤条件中的列进行一定的处理后就不能有效的使用索引。为了潜在的使用索引,需要对上面的语句中的谓词进行调整
where orderdate>=‘20080101’ and orderdate<‘20090101’;
这样的处理还可以使用可能的索引列orderdate。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值