如何在列数据类型为“varchar”的情况下进行加法?
How to do addition where column data type is `varchar`?
我正在研究一种逻辑,根据 DesiredDate
字段出现的一定次数,DesiredTime
应该递增。问题是 DesiredTime
是 varchar
所以我不能在那个领域做加法。实现此目标的最佳方法是什么?
例如,如果 10/08/2015
出现了 3 次,那么 DesiredTime
就是 11:45AM
。在第 4 个 10/08/2015
条目上,DesiredTime
应该是 11:17AM
,第 5 个应该是 11:19
等等。
方法 - 1:
UPDATE OrderInfo SET DesiredTime = DesiredTime + 2 WHERE OrderID = 39418875
错误:
Conversion failed when converting the varchar value '11:15AM' to data
type int.
方法 - 2:
select * from OrderInfo
where CONVERT(int, DesiredTime) ='11:45AM'
and OrderDate = '10/7/2015'
and RestaurantID = 4007
错误:
Conversion failed when converting the varchar value '11:15AM' to data
type int.
当前行为:
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
预期行为:
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
我根本不明白你的逻辑,但是要将时间添加到存储为 varchar 的时间值中,你可以使用 cast
将其转换为适当的 time
类型值,然后使用dateadd
添加时间。
dateadd(minute,2,cast(desiredtime as time))
这应该可以帮助您入门。
我正在研究一种逻辑,根据 DesiredDate
字段出现的一定次数,DesiredTime
应该递增。问题是 DesiredTime
是 varchar
所以我不能在那个领域做加法。实现此目标的最佳方法是什么?
例如,如果 10/08/2015
出现了 3 次,那么 DesiredTime
就是 11:45AM
。在第 4 个 10/08/2015
条目上,DesiredTime
应该是 11:17AM
,第 5 个应该是 11:19
等等。
方法 - 1:
UPDATE OrderInfo SET DesiredTime = DesiredTime + 2 WHERE OrderID = 39418875
错误:
Conversion failed when converting the varchar value '11:15AM' to data type int.
方法 - 2:
select * from OrderInfo
where CONVERT(int, DesiredTime) ='11:45AM'
and OrderDate = '10/7/2015'
and RestaurantID = 4007
错误:
Conversion failed when converting the varchar value '11:15AM' to data type int.
当前行为:
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
预期行为:
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
我根本不明白你的逻辑,但是要将时间添加到存储为 varchar 的时间值中,你可以使用 cast
将其转换为适当的 time
类型值,然后使用dateadd
添加时间。
dateadd(minute,2,cast(desiredtime as time))
这应该可以帮助您入门。