1

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

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

我正在从 UI 输入开始日期 03/01/2013 和 03/04/2013

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

谢谢

4

2 回答 2

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(ie; 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)
于 2013-03-04T18:09:04.273 回答
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))

于 2013-03-04T17:55:51.490 回答