如何将日期时间字段添加到+ 1天

时间:2013-03-04 17:53:22

标签: sql sql-server sql-server-2008 stored-procedures

在我的存储过程中,我有一个StartDate和EndDate字段在Varchar(10)

@StartDate Varchar(10),
@EndDate Varchar(10)

我正在从UI获取开始日期03/01/2013和03/04/2013

的输入

对于结束日期,我需要添加一天+即如果我的EndDate是03/04/2013我需要更新到03/05/2013 ..

由于

2 个答案:

答案 0 :(得分:6)

如果这是一个新的存储过程(或者没有使用它的任何其他代码),最好的办法是将变量更改为Date类型。由于if you comparing data by date ,您应该比较 Dates not varchar values

如果您CAN更改了变量类型,则可以使用DATEADD()函数添加一天,如下所示。

--if @enddate is a date type
select @enddate = dateadd(day,1,@enddate)

如果你CANNOT更改变量类型,最好在ISO format(即yyyymmdd)中传递它们,因为您当前的字符串格式是特定于文化的,并且查询可能会在具有不同的文化。

--date pass as yyyymmdd (not culture specific)
select @enddate = convert(varchar(10), 
                      dateadd(day, 1, convert(date, @enddate)), 101)

--date pass as mm/dd/yyyy (US culture)
select @enddate = convert(varchar(10), 
                      dateadd(day, 1, convert(date, @enddate,101)), 101)

答案 1 :(得分:3)

SET @EndDate = DATEADD (d, 1, CAST(@StartDate AS datetime))datetime为您提供答案。如果需要,您可以转换回varchar:

SET @EndDate = CAST(DATEADD (d, 1, CAST(@StartDate AS datetime)) AS varchar(10))