我有一个在线表单,用户从下拉列表中选择课程的持续时间。然后,这些数据进入名为duration-varchar(5)的数据库字段,数据示例为02:30。然后我运行一个存储过程,它应该将数据转换为2.5这允许计算持续时间与每小时工资率。
DataFields
持续时间 - varchar(5)02:30
ValueOfDuration - 数字(18,2)2.5
我的问题是,当存储过程运行时,我收到错误。
将数据类型varchar转换为real。时出错。
UPDATE
ManualAdjustments
SET
ValueOfDuration = ROUND (CONVERT(real, LEFT(Duration, 2))+(CONVERT(real,RIGHT(Duration, 2)) / 60.0),2)
WHERE ValueOfDuration IS NULL
答案 0 :(得分:2)
假设SQL Server和您的持续时间不超过59:59
Update YourTable Set ValueOfDuration = DateDiff(SS,'1900-01-01','1900-01-01 00:'+Duration)/60.
在这种情况下,02:30将返回2.5
答案 1 :(得分:1)
如果数据库是SQL Server
UPDATE
ManualAdjustments
SET
ValueOfDuration= CAST(DATEDIFF(minute,'1990-1-1','1990-1-1 '+Duration)/60.0 AS NUMERIc(15,2))
WHERE ValueOfDuration IS NULL