欢迎来到Doc100.Net免费学习资源知识分享平台!
您的位置:首页 > 程序异常 >

获取上星期的开始时间和结束时间

更新时间: 2014-01-05 02:17:30 责任编辑: Author_N1

 

获取上周的开始时间和结束时间
我想获取到上周的开始时间和结束时间,例如:今天的日期是:2013-11-02,
那么上周的开始时间为:2013-10-27,结束时间为:2013-10-31,要怎么获取这上周的时间呢?请大家给个建议,谢谢.....
--参考方法--
改改吧

SQL获取周开始日期和结束日期
DECLARE@SYearint--开始年份
DECLARE@EYearint--结束年份

SETDATEFIRST 7--设周日为每周第一天
SET@SYear=2004
SET@EYear=2010
--周以至少四天为计 
--判断第一周的开始与结束
DECLARE@YSDateDATETIME--年的第一周开始时间
DECLARE@YEDateDATETIME--年的最后周结束时间
DECLARE@WSDateDATETIME--用于循环的年内某周的开始日期
DECLARE@WEDateDATETIME--用于循环的年内某周的开始日期
DECLARE@IWeekint--当前周为本年的第几周
WHILE@SYear<=@EYear
BEGIN--BEGIN WHILE YEAR

SET@YSDate=CAST( (CAST( @SYearASVARCHAR(4) )+'/01/01') ASDATETIME)
SET@YEDate=CAST( (CAST( @SYearASVARCHAR(4) )+'/12/31') ASDATETIME)
SET@IWeek=1

IFDATEPART(DW,@YSDate)>4--第一周已不足4天 从第二周开始算第一周
BEGIN
SET@YSDate=DATEADD(DAY,(8-DATEPART(DW,@YSDate)) ,@YSDate)--本周开始日期
END
ELSE--第一周足4天 从本周日算第一天
BEGIN
SET@YSDate=DATEADD(Day,(-(DATEPART(DW,@YSDate)-1)) ,@YSDate)
END

SET@WSDate=@YSDate
SET@WEDate=DATEADD(DAY,6,@WSDate) --本周结束日期

WHILEDATEDIFF(DAY,@WSDate,@YEDate)>=4
BEGIN
--执行Insert
INSERTINTOtWeek(tYear, tWeekSeq, tStartDate, tEndDate)
VALUES(@SYear,@IWeek,@WSDate,@WEDate)
--重置参数
SET@IWeek=@IWeek+1
SET@WSDate=@WSDate+7
SET@WEDate=@WEDate+7
END

SET@SYear=@SYear+1

END
--参考方法--
SELECT DATEADD(WEEKDAY,1-DATEPART(WEEKDAY,getdate()),getdate()) AS '本周第一天(周日)'--注意此处与@getdate()first的值有关  
,DATEADD(WEEK,DATEDIFF(WEEK,-1,getdate()),-1) AS '所在星期的星期日'--注意此处与@getdate()first的值有关  
,DATEADD(DAY,2-DATEPART(WEEKDAY,getdate()),getdate()) AS '所在星期的第二天'--注意此处与@getdate()first的值有关,其他天数类推  
,DATEADD(WEEK,-1,DATEADD(DAY,1-DATEPART(WEEKDAY,getdate()),getdate())) AS '上个星期第一天(周日)'--注意此处与@getdate()first的值有关  
,DATEADD(WEEK,1,DATEADD(DAY,1-DATEPART(WEEKDAY,getdate()),getdate())) AS '下个星期第一天(星期日)'--注意此处与@getdate()first的值有关  
,DATENAME(WEEKDAY,getdate()) AS '本日是周几'  
,DATEPART(WEEKDAY,getdate()) AS '本日是周几'

/*
本周第一天(周日)               所在星期的星期日                所在星期的第二天                上个星期第一天(周日)             下个星期第一天(星期日)            本日是周几                          本日是周几
----------------------- ----------------------- ----------------------- ----------------------- ----------------------- ------------------------------ -----------
2013-12-08 15:23:19.107 2013-12-08 00:00:00.000 2013-12-09 15:23:19.107 2013-12-01 15:23:19.107 2013-12-15 15:23:19.107 Tuesday                        3

*/

--参考方法--
引用:
我想获取到上周的开始时间和结束时间,例如:今天的日期是:2013-11-02,
那么上周的开始时间为:2013-10-27,结束时间为:2013-10-31,要怎么获取这上周的时间呢?请大家给个建议,谢谢.....

2013-10-27 到2013-10-31只有5天啊


declare @date date='2013-11-02'

select  dateadd(d,1-7-DATEPART(weekday,@date), @date) StartDay
,dateadd(d,6,dateadd(d,-6-DATEPART(weekday,@date), @date)) EndDay

try this
上一篇:上一篇
下一篇:下一篇

 

随机推荐程序问答结果

 

 

如对文章有任何疑问请提交到问题反馈,或者您对内容不满意,请您反馈给我们DOC100.NET论坛发贴求解。
DOC100.NET资源网,机器学习分类整理更新日期::2014-01-05 02:17:30
如需转载,请注明文章出处和来源网址:http://www.doc100.net/bugs/t/8067/
本文WWW.DOC100.NET DOC100.NET版权所有。