DECLARE @s CHAR(20),@nexts CHAR(20),@last6 DATETIME SET @s='2006-6' --假设你要求的年月:求2006年6月最后一个星期五是哪天 SET @s=RTRIM(@s)+'-1' SET @nexts=DATEADD(m,1,@s) SET @nexts=DATEADD(d,-1,RTRIM(YEAR(@nexts)) + '-' + RTRIM(MONTH(@nexts)) + '-1') SELECT @last6=DATEADD(d,-(DATEPART(WEEKDAY,@nexts)+1),@nexts) SELECT DATENAME(WEEKDAY,@last6),@last6
create function f_getlastFriday( @chr varchar(7) ) returns datetime as begin declare @re datetime select @re=dateadd(day,-1,dateadd(month,1,@chr+'-01')) while datepart(dw,@re)<>6 select @re=Dateadd(day,-1,@re) return(@re) end go调用示例: select dbo.f_getlastFriday('2006-05')
SET @s='2006-6' --假设你要求的年月:求2006年6月最后一个星期五是哪天
SET @s=RTRIM(@s)+'-1'
SET @nexts=DATEADD(m,1,@s)
SET @nexts=DATEADD(d,-1,RTRIM(YEAR(@nexts)) + '-' + RTRIM(MONTH(@nexts)) + '-1')
SELECT @last6=DATEADD(d,-(DATEPART(WEEKDAY,@nexts)+1),@nexts)
SELECT DATENAME(WEEKDAY,@last6),@last6
@chr varchar(7)
) returns datetime
as
begin
declare @re datetime
select @re=dateadd(day,-1,dateadd(month,1,@chr+'-01'))
while datepart(dw,@re)<>6
select @re=Dateadd(day,-1,@re)
return(@re)
end
go调用示例:
select dbo.f_getlastFriday('2006-05')
http://jinliangliu.cnblogs.com/archive/2006/06/19/429559.html