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

标签 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

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

谢谢

最佳答案

如果这是一个新的存储过程(或没有使用它的任何其他代码),最好的办法是将变量更改为 Date 类型。因为如果您按日期比较数据 您应该比较 日期而不是 varchar 值

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

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

如果您不能更改变量类型,您最好以ISO 格式(即yyyymmdd)传递它们,因为您当前的字符串格式是culture specific 和 query 在具有不同文化的服务器中可能会失败。

--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)

关于sql - 如何将日期时间字段添加到 + 1 天,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15207811/

相关文章:

sql - 具有递归的 CTE - row_number() 聚合

sql - 如何避免因 1 NULL 而导致整个 INSERT 批处理失败

sql - 非均匀分布数据集的 NTILE 替代方案

sql - 在关系数据库中建模原子事实

SQL Server 'FETCH FIRST 1 ROWS ONLY' 无效使用

c# - C#SqlDataReader引发语法错误,但是命令在SQL Server中运行正常?

sql-server-2008 - SQL查询如何计算表中同一列的运行差异?

sql-server-2008 - 如何从sql server 2008中的日期获取月份的周数

mysql - 如何实现更高效的搜索功能?

c# - 如今“形状 - 追加”查询等效性