如何在SQL中从用户定义的日期开始增加1天?

时间:2018-08-01 23:41:03

标签: sql-server

我在SQL中理解的是,如果您从今天起增加1天,则可以使用

SELECT @date = CONVERT(VARCHAR(8), DATEADD(DAY, 1, GETDATE()), 112) 

但是我的问题是,我没有今天的日期。我有一个用户定义的日期字段,该字段是我设置此日期的字段。

例如:我的列的名称是“ Return Booked”,我该如何为已设置的每笔预订加1天?

See attached: SQL Server result

此外,如果我尝试使用CONVERT(DATEADD,*****),则会出现以下错误:

如何处理错误:从字符串转换日期和/或时间时转换失败。

我当前的SELECT语句是

SELECT dbo.AdditionalDetailInfo.UserDefined6 AS ReturnBooked

请注意,UserDefined6的数据类型为nvarchar。 :(

谢谢!

2 个答案:

答案 0 :(得分:0)

由于列的数据类型为nvarchar,nvarchar上的Dateadd函数将失败,因此首先需要将列值convert设置为datetime,然后使用{ {1}}功能,如下所示

DateAdd

查看示例数据的图像后,似乎您有一排带有错误格式Select DATEADD(DAY, 1, CONVERT(Datetime,ReturnBooked)) 的日期文本。对于该特定行,转换将失败,因此建议修复此类错误数据。

答案 1 :(得分:0)

您需要将代码段中的GETDATE()更改为您的值,并且将日期值保留在nvarchar中并不是一个好习惯,因此您首先需要进行一些转换。 像这样的东西:

SELECT CONVERT(VARCHAR(8), DATEADD(DAY, 1, (CONVERT(DATETIME,UserDefined6))),112) AS ReturnBooked
FROM dbo.AdditionalDetailInfo