求某日期所在"周"的周一的日期与周日的日期
http://expert.csdn.net/Expert/topic/1252/1252182.xml?temp=.5142328declare @dateX smalldatetime
set @dateX = '2002-12-16'
select dateadd(day, case when datepart(weekday,@dateX) = 1 then - 5
else 2 end
- datepart(weekday,@dateX),@dateX)
,dateadd(day,7 - datepart(weekday,@dateX) +
case when datepart(weekday,@dateX) = 1 then - 6
else 1 end
,@dateX)
--declare @dateX smalldatetime
--set @dateX = '2002-12-15'
SET DATEFIRST 1
select dateadd(day, - datepart(weekday,@dateX),@dateX) + 1
,dateadd(day,7 - datepart(weekday,@dateX),@dateX)
SET DATEFIRST 7
http://expert.csdn.net/Expert/topic/1252/1252182.xml?temp=.5142328declare @dateX smalldatetime
set @dateX = '2002-12-16'
select dateadd(day, case when datepart(weekday,@dateX) = 1 then - 5
else 2 end
- datepart(weekday,@dateX),@dateX)
,dateadd(day,7 - datepart(weekday,@dateX) +
case when datepart(weekday,@dateX) = 1 then - 6
else 1 end
,@dateX)
--declare @dateX smalldatetime
--set @dateX = '2002-12-15'
SET DATEFIRST 1
select dateadd(day, - datepart(weekday,@dateX),@dateX) + 1
,dateadd(day,7 - datepart(weekday,@dateX),@dateX)
SET DATEFIRST 7
这两种方法都对,行谢过了,但并不是我想要的。
已知条件是
2003年的第n周
求
这一周的第一天和最后一天的日期,
多谢了
set @a=1declare @start datetime
set @start=dateadd(wk,@a,cast(cast(year(getdate()) as char(4))+'-01-01' as datetime))
select @start 开始时间,dateadd(day,7,@start) 结束时间??
期待ing!
1.系统默认每周第一天为星期天,这点要修改。
2.2003-01-01本身就是第一周。declare @n int
set @n=1select
dateadd(wk,@n-1,'2003-01-01')-datepart(dw,'2003-01-01')+2 as start,
dateadd(wk,@n-1,'2003-01-01')-datepart(day,'2003-01-01')+6 as endday
declare @n int
set @n=1
select
dateadd(wk,@n-1,'2003-01-01')-datepart(dw,'2003-01-01')+2 as start,
dateadd(wk,@n-1,'2003-01-01')-datepart(day,'2003-01-01')+5 as endday
select
datename(dw,dateadd(wk,@n-1,'2003-01-01')-datepart(dw,'2003-01-01')+2) as start,
datename(dw,dateadd(wk,@n-1,'2003-01-01')-datepart(day,'2003-01-01')+5) as enddaystart endday
------------------------------------------------------ ------------------------------------------------------
2002-12-30 00:00:00.000 2003-01-05 00:00:00.000(所影响的行数为 1 行)start endday
------------------------------ ------------------------------
星期一 星期日(所影响的行数为 1 行)
set @n=1
select
dateadd(wk,@n-1,'2003-01-01')-datepart(dw,'2003-01-01')+2 as start,
dateadd(wk,@n-1,'2003-01-01')-datepart(day,'2003-01-01')+5 as endday
set @a=1SET DATEFIRST 1declare @end datetime
set @end=dateadd(wk,@a,cast(cast(year(getdate()) as char(4))+'-01-01' as datetime))select dateadd(day,-7,@end) 开始时间,@end 结束时间
SET DATEFIRST 7
set @a=10SET DATEFIRST 1declare @Curr_Date datetime
set @Curr_Date=dateadd(wk,@a-1,cast(cast(year(getdate()) as char(4))+'-01-01' as datetime))select datepart(wk,@Curr_Date)select datepart(dw,@Curr_Date)select @Curr_Date-datepart(dw,@Curr_Date)+1 开始时间,@Curr_Date+7-datepart(dw,@Curr_Date) 结束时间