我在SQL Server上有一个Varchar日期时间列。 我需要在用户上次日期添加5天。
我试过
" UPDATE [dbo].[infoTbl] SET lastDate convert(DATEADD (dd, 5, lastDate)) "
" UPDATE [dbo].[infoTbl] SET lastDate DATEADD (dd, 5, lastDate) "
" UPDATE [dbo].[infoTbl] SET lastDate convert(DATEADD (d, 5, CAST(@lastDate AS datetime)) AS varchar(10)) "
错误:将varchar数据类型转换为日期时间数据类型会导致超出范围的值。
我的旧日期值为:20.09.2015 10:14
我在Godaddy上建立数据库,新的价值是:
2015-09-15 04:52:52.723
答案 0 :(得分:1)
这就是为什么你应该使用适当的数据类型。
要使用任何DATETIME函数,您需要将值转换为DATE / Datetime,然后使用该函数,然后将其转换回varchar以更新列。
像.......
这样的东西UPDATE [dbo].[infoTbl]
SET lastDate = CONVERT(VARCHAR(23),
DATEADD (DAY
,5
, CAST( SUBSTRING(lastDate , 7, 4)
+SUBSTRING(lastDate , 4, 2)
+LEFT(lastDate ,2)
+' ' +RIGHT(lastDate, 5) AS DateTime)
), 121)
WHERE ISDATE( SUBSTRING(lastDate , 7, 4)
+ SUBSTRING(lastDate , 4, 2)
+ LEFT(lastDate ,2)
+' ' +RIGHT(lastDate, 5)) = 1
答案 1 :(得分:0)
请尝试以下脚本
declare @chardate varchar(30) = '10.09.2015 10:14'
declare @datetime datetime
set @datetime = convert(datetime, substring(@chardate,1,10),104) + convert(datetime, substring(@chardate,12,5),108)
select dateadd(dd,5,@datetime)
在将字符日期时间表示转换为日期时间变量时,您可以使用CONVERT function with Datetime Format options
您可以在给定参考中找到104,108格式化选项 不幸的是,你的角色表示与基本格式不匹配,所以我不得不分开日期和时间