sql获取上一周时间段
关键词:sql上一周,sql上一周时间,sql上一周时间段,sql周时间段。
在做网站过程中遇到,用sql求出上个星期的消费,不管今天是星期几,就求出上个星期的消费。实际也就是求出上个星期的星期日期段。
比如今天 2008-09-22 周一 那么求的结构应该是 9-15到9-21的时间段的消费。23号,24号同样
注意:一下sql语句在查询分析器中运行!
首先获取当前时间:getdate()
sql语句: select getdate()
比如获取时间为:2008-09-22 10:25:47.077
第二步获取日期格式:CONVERT(varchar(10), GETDATE(), 120)
sql语句:select CONVERT(varchar(10), GETDATE(), 120)
得出结果为:2008-09-22
第三步获取当前日期的星期几的数字:DATEPART(Weekday,CONVERT(varchar(10), GETDATE(), 120))
sql语句:select DATEPART(Weekday,CONVERT(varchar(10), GETDATE(), 120))
在sql中周日表示1 周一表示2 一次类推周二 3.....
得出结果为:2 (22号为周一)
第四步,获取上周的今天(周一 也就是9-15)CONVERT(varchar(10), GETDATE()-7, 120)(看第二步也就是获取日期后,通过day的加减回到
上周)
sql语句:select CONVERT(varchar(10), GETDATE()-7, 120)
结果为:2008-09-15
[url=www.forasp.cn]www.forasp.cn
第五步:用上周日与现在所在周名的数值差。也就是,周一居现在差几天(比如现在22号,周一那就差-1天)
sql语句:select 1 - DATEPART(Weekday,CONVERT(varchar(10), GETDATE() - 7, 120))
得出-1 也就是,从今天-1天就是上周的开始,那放到上周周期段,也就是上上周的周日是开始
第六步:用dateadd的差值函数(日day)算出周一的日期
sql语句:select DATEADD(Day, 1 - DATEPART(Weekday,CONVERT(varchar(10), GETDATE() - 7, 120)), CONVERT(varchar(10), GETDATE()-
7, 120))
sql语句中的参数数值分别为:(day,1-2,2008-09-15 00:00:00)也就是(day,-1,2008-09-15 00:00:00)
得出结果为 2008-9-15 00:00:00
第七步,用同样的方法,在现在的(第六步得出)日期上加7天即可!
select DATEADD(Day, 1 - DATEPART(Weekday,CONVERT(varchar(10), GETDATE() - 7, 120)), CONVERT(varchar(10), GETDATE(), 120))
得出2008-09-21 00:00:00
这样就算出来了:select getdate() as xianzai,DATEADD(Day, 1 - DATEPART(Weekday,CONVERT(varchar(10), GETDATE() - 7, 120)),
CONVERT(varchar(10), GETDATE()-7, 120)) as kaishi , DATEADD(Day, 1 - DATEPART(Weekday,CONVERT(varchar(10), GETDATE() - 7,
120)), CONVERT(varchar(10), GETDATE(), 120)) as jieshu
得出结果:xianzai kaishi jieshu
2008-09-22 10:57:30.997 2008-09-14 00:00:00.000 2008-09-21 00:00:00.000
这样上周段的日期就求出来了(本站原创,转载请注名出处)