create procedure Stu_time
@time varchar(50)
as
SELECT CASE WHEN isdate(@time)=1 THEN @time
ELSE DATEADD(DD,-1,DATEADD(MM,1,LEFT(@time,8)+'1')) END
GO
exec Stu_time '2005-02-345'
create function fn_test(@ddate varchar(10))
returns varchar(10)
as
begin
declare @i int,@ii int
decalre @rdate @varchar(10) = ''
set @i = 1
select @ii = isdate(@ddate)
if (@ii <> 1)
begin
while @i<= 30
begin
select @ddate = dateadd( day,-1,cast(@ddate as datetime))
select @ii = isdate(@ddate)
if (@ii = 1)
return @ddate
set @i += 1
end
end
else return @ddate
create function fn_test(@ddate varchar(10))
returns varchar(10)
as
begin
declare @i int,@ii int
decalre @rdate @varchar(10) = ''
set @i = 1
select @ii = isdate(@ddate)
if (@ii <> 1)
begin
while @i<= 30
begin
select @ddate = dateadd( day,-1,cast(@ddate as datetime))
select @ii = isdate(@ddate)
if (@ii = 1)
begin
create function fn_IsDate(@dt varchar(10))
returns varchar(10)
as
begin
if((year(@dt) % 4 = 0 and year(@dt) % 100 <> 0) or year(@dt) % 400 = 0)
begin
if(isdate(@dt) = 0 and month(@dt) = 2)
begin
set @dt = left(@dt, 8) + '29'
end
end
else
begin
if(isdate(@dt) = 0 and month(@dt) = 2)
begin
set @dt = left(@dt, 8) + '28'
end
end