在我的存储过程中,我有一个StartDate和EndDate字段在Varchar(10)
中@StartDate Varchar(10),
@EndDate Varchar(10)
我正在从UI获取开始日期03/01/2013和03/04/2013
的输入对于结束日期,我需要添加一天+即如果我的EndDate是03/04/2013我需要更新到03/05/2013 ..
由于
答案 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))