网站制作学习网经验与学习→正文:sql获取上一周时间段
字体:

sql获取上一周时间段

经验与学习 2008/9/22 11:00:59  点击:不统计

关键词: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



这样上周段的日期就求出来了(本站原创,转载请注名出处

·上一篇:去掉链接图片虚线 >>    ·下一篇:Recordset对象打开数据库锁定方式 >>
推荐文章
最新文章