[英]how to convert/calculate nvarchar to int
我正在尝试将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
但它给出以下错误:
从字符串转换日期和/或时间时转换失败
以下在SQL Server中有效:
select datediff(minute, 0, '05:16')
所以这也应该工作:
select datediff(minute, 0, column1)
这甚至适用于字符串两侧的空格。
尝试这个..
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
由于数据类型为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
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.