在我的存储过程中,我有一个 StartDate 和 EndDate 字段在 Varchar(10)
@StartDate Varchar(10),
@EndDate Varchar(10)
我正在从 UI 输入开始日期 03/01/2013 和 03/04/2013
对于结束日期,我需要添加一天 + 如果我的 EndDate 是 03/04/2013 我需要将其更新为 03/05/2013..
谢谢
在我的存储过程中,我有一个 StartDate 和 EndDate 字段在 Varchar(10)
@StartDate Varchar(10),
@EndDate Varchar(10)
我正在从 UI 输入开始日期 03/01/2013 和 03/04/2013
对于结束日期,我需要添加一天 + 如果我的 EndDate 是 03/04/2013 我需要将其更新为 03/05/2013..
谢谢
如果这是一个新的存储过程(或者不是任何其他使用它的代码),最好将变量更改为 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)
SET @EndDate = DATEADD (d, 1, CAST(@StartDate AS datetime))
给你答案datetime
。然后,如果需要,您可以转换回 varchar:
SET @EndDate = CAST(DATEADD (d, 1, CAST(@StartDate AS datetime)) AS varchar(10))