如何将nvarchar转换/计算为int

时间:2019-05-08 11:23:30

标签: sql sql-server

我正在尝试将nvarchar(12)转换为int,以便可以在我的代码隐藏中使用它,我的列中的数据与时间相关(HH:MM),如下所示:

00:02
00:55
01:22
05:16

我想将其转换为计算的分钟数:

2
55
82
316

我尝试使用以下sql:

SELECT LTRIM(DATEDIFF(MINUTE, 0, column1)) 
FROM tstable

但是它给出了以下错误:

  

从字符串转换日期和/或时间时转换失败

4 个答案:

答案 0 :(得分:3)

以下在SQL Server中有效:

select datediff(minute, 0, '05:16')

所以这也应该起作用:

select datediff(minute, 0, column1)

这甚至可以处理字符串两侧的空格。

答案 1 :(得分:1)

尝试一下。

SELECT 
CAST(SUBSTRING(your_column,1,CHARINDEX(':',your_column,0)-1)AS INT)*60+
CAST(SUBSTRING(your_column,CHARINDEX(':',your_column,0)+1,LEN(your_column)) AS INT) AS T_MIN
FROM your_table

答案 2 :(得分:0)

由于数据类型为nvarchar,因此可以使用STRING方法:

DECLARE @HhMm AS NVARCHAR(12) = '05:16';
SELECT LEFT(@HhMm, 2) * 60 + RIGHT(@HhMm, 2) 

结果为316

演示并具有给定的示例数据:

DECLARE @TestTable TABLE (TimeVal NVARCHAR (12));
INSERT INTO @TestTable (TimeVal)  VALUES ('00:02'), ('00:55'), ('01:22'), ('05:16');

SELECT LEFT(TimeVal, 2) * 60 + RIGHT(TimeVal, 2) AS MinutesVal
FROM @TestTable

输出:

MinutesVal
-----------
2
55
82
316

答案 3 :(得分:0)

select LEFT(Time1, 2) * 60 + Right(Time1, 2) Minutes from table6

enter image description here