我在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。 :(
谢谢!
答案 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