как конвертировать / вычислить nvarchar в int - PullRequest
0 голосов
/ 08 мая 2019

Я пытаюсь преобразовать nvarchar (12) в int, чтобы я мог использовать его в своем коде, данные в моем столбце связаны со временем (ЧЧ: ММ), как показано ниже:

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

Я хотел бы преобразовать его в расчетные минуты:

2
55
82
316

Я пытался использовать ниже sql:

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

, но выдает ошибку ниже:

Ошибка преобразования при преобразовании даты и / или времени из строки символов

Ответы [ 4 ]

3 голосов
/ 08 мая 2019

В SQL Server работает следующее:

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

Так что это также должно работать:

select datediff(minute, 0, column1)

Это работает даже с пробелами по обе стороны строки.

1 голос
/ 08 мая 2019

Попробуйте это ..

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
0 голосов
/ 08 мая 2019
select LEFT(Time1, 2) * 60 + Right(Time1, 2) Minutes from table6

enter image description here

0 голосов
/ 08 мая 2019

Поскольку тип данных 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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...