读书人

用字符串表示日期的比较和累加,该怎么

发布时间: 2012-01-28 22:06:13 作者: rapoo

用字符串表示日期的比较和累加
create procedure CreateEvent
@eventRepeat bit = 0,
@eventStartDate varchar(20),@eventEndDate varchar(20),
@eventTitle varchar(30),
@userName varchar(30)
as
@eventTempDate varchar(20)

begin

set @eventTempDate = @eventStartDate

if @eventRepeat = 1
begin
while @EventTempDate < @EventEndDate
begin
insert into T_Event(EventStartDate,EventEndDate,EventTitle,UserName)
values(@eventTempDate,@eventEndDate,@eventTitle,@userName)
set @EventTempDate ++ ?

end
end
else
begin
insert into T_Event(EventStartDate,EventEndDate,EventTitle,UserName)
values(@eventStartDate,@eventEndDate,@eventTitle,@userName)

end

end
go

@eventStartDate varchar(20),@eventEndDate varchar(20) 的值都是形为 '2007-01-11 '表示日期的字符串,
按照时间的先后比较2个的大小,如果@eventStartDate < @eventEndDate 则把@eventTempDate作为参数插入到记录中,插入猴并增加1天,
直到@eventTempDate等于 @eventEndDate为止,这里要考虑到日期的有效性,啥时候在天上累加,啥时候在月上累加,特别是润年,润月.

[解决办法]
select dateadd(day,1, '2007-10-11 ')

-----------------------
2007-10-12 00:00:00.000

(1 row(s) affected)
[解决办法]
转换为时间型后加一在转换回来.以@eventTempDate为例.

set @eventTempDate = cast(dateadd(day,1,cast(@eventTempDate as datetime)) as varchar)
[解决办法]
create procedure CreateEvent
@eventRepeat bit = 0,
@eventStartDate varchar(20),@eventEndDate varchar(20),
@eventTitle varchar(30),
@userName varchar(30)
as

if isdate(@eventStartDate)=0 or isdate(@eventEndDate)=0
begin
raiserror( '日期 @eventStartDate=%s 或者 @eventEndDate=%s 格式不正确 ',16,1,@eventStartDate,@eventEndDate)
return (-1)
end

--@aebventTempDate varchar(20)

--begin

set @eventStartDate = @eventStartDate

if @eventRepeat = 1
begin
while @eventStartDate < @EventEndDate
begin
insert into T_Event(EventStartDate,EventEndDate,EventTitle,UserName)
values(@eventStartDate,@eventEndDate,@eventTitle,@userName)
set @eventStartDate = convert(varchar(10), dateadd(day,1,@eventStartDate), 120)
end
end
else
begin
insert into T_Event(EventStartDate,EventEndDate,EventTitle,UserName)
values(@eventStartDate,@eventEndDate,@eventTitle,@userName)
end

--end
go

读书人网 >SQL Server

热点推荐