Sql server Varchar DateTime Column添加Day to Date如何?

时间:2015-09-15 13:49:50

标签: sql-server datetime

我在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

2 个答案:

答案 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格式化选项 不幸的是,你的角色表示与基本格式不匹配,所以我不得不分开日期和时间