将文本转换为数字

时间:2016-10-03 14:38:41

标签: sql sql-server

我有一个在线表单,用户从下拉列表中选择课程的持续时间。然后,这些数据进入名为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

2 个答案:

答案 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