先举几个例子:
–当前时间
select getdate()
–当前时间周的起始日期(以周一为例)
select DATEADD(week,DATEDIFF(week,0,getdate()),0)
–上周起始:
select dateadd(week,-1,DATEADD(week,DATEDIFF(week,0,getdate()),0))
–上上周起始:
select dateadd(week,-2,DATEADD(week,DATEDIFF(week,0,getdate()),0))
–上上上周起始:s
elect dateadd(week,-3,DATEADD(week,DATEDIFF(week,0,getdate()),0))
说明
DATEDIFF(datepart,startdate,enddate)
DATEDIFF(计算差值项目【年月日等】,起始日期,终止日期)
DATEADD(datepart,number,date)
DATEDIFF(计算加和项目【年月日等】,数量,选择的日期)
以周一为例:
select DATEADD(week,DATEDIFF(week,0,getdate()),0)
select DATEADD(week,DATEDIFF(计算第0天与当前日期差几周),0)
select DATEADD(把上一步计算出的差几周加和到第0天)
也就是:不管今天是周几,和第0天的差距永远是固定的X周
(例:本周的周一到周五距离前两周的week间隔永远是2)
而第0天加上X周则返回的是本周第一天的日期
则,如果要计算周二、三、……的信息,只需要使用DATEADD在此基础上加上相应的天数即可,以上~