如何在列数据类型为`varchar`的情况下进行添加?

时间:2015-10-07 13:48:09

标签: sql-server sql-server-2014

我正在研究一种逻辑,根据DesiredDate字段的特定次数,DesiredTime应该递增。问题是DesiredTimevarchar,所以我不能在该字段中添加。实现这一目标的最佳方法是什么?

例如,如果10/08/2015发生3次,则DesiredTime11:45AM。在10/08/2015DesiredTime条目中,11:17AM应该是11:19,第五个应该是UPDATE OrderInfo SET DesiredTime = DesiredTime + 2 WHERE OrderID = 39418875 &等等。

方法 - 1:

select * from OrderInfo 
where CONVERT(int, DesiredTime) ='11:45AM' 
  and OrderDate = '10/7/2015' 
  and RestaurantID = 4007 

错误:

  

将varchar值'11:15AM'转换为数据时转换失败   输入int。

方法 - 2:

DesiredDate DesiredTime
----------- -----------
10/08/2015  11:15AM
10/08/2015  11:15AM
10/08/2015  11:15AM
10/08/2015  11:15AM
10/08/2015  11:15AM

错误:

  

将varchar值'11:15AM'转换为数据时转换失败   输入int。

当前行为:

DesiredDate DesiredTime
----------- -----------
10/08/2015  11:15AM
10/08/2015  11:15AM
10/08/2015  11:15AM
10/08/2015  11:17AM
10/08/2015  11:19AM

预期行为:

int64

1 个答案:

答案 0 :(得分:2)

我根本不了解您的逻辑,但为了将时间值添加到存储为varchar的时间值,您可以使用cast将其转换为正确的time类型值,然后使用dateadd为其增加时间。

dateadd(minute,2,cast(desiredtime as time))

这应该可以让你开始。