Преобразуйте последовательность HH:MM:SS в число минут

Я имею ниже вопроса.

select cast(dateadd(minute, datediff(minute, TimeIn, TimeOut), 0) as time(0) )

Я получаю результаты двух колонок в формате "часовых минимальных секунд". Я хотел бы его в формате минуты только. Так 2:47:00 прочитает 167 .

2
эй, могли вы, пожалуйста, проходить свои вопросы и награждать людей с лучшим ответом.
добавлено автор t-clausen.dk, источник
какой db, mysql, SQL-сервер?
добавлено автор Justin, источник

7 ответы

Вопрос SQL Server:

SELECT cast(substring('02:47:00',1,2) AS int)*60+
       cast(substring('02:47:00',4,2) AS int)+ 
       cast(substring('02:47:00',7,2) AS int)/60.0 AS minutes

Вопрос MYSQL:

SELECT TIME_TO_SEC('02:47:00')/60

Результат:

| MINUTES |
-----------
|     167 |
2
добавлено
Работы точно, как мне был нужен он к для моей области продолжительности вызова. Спасибо!
добавлено автор donviti, источник

объявите @Time ДАТУ И ВРЕМЯ = '1:05:00'

выберите ((DATEPART (ЧАС, @Time) *60) + (DATEPART (МИНУТА, @Time)))

2
добавлено

Для SQL Server (работает на 2005 также):

select Datediff(mi,convert(datetime,'00:00:00',108), convert(datetime,'02:47:00',108))
1
добавлено

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

datediff(minute, 0, '02:47')
1
добавлено
SELECT DATEDIFF(minute,CAST('00:00' AS TIME), CAST('02:47' AS TIME)) AS difference

Дает вам:

| DIFFERENCE |
--------------
|        167 |
0
добавлено
$time = '02:47:00';

$time = explode(":",$time); 

$total = ($a[0]*60)+$a[1];

echo 'Minutes : '.$total;
echo 'Seconds : '.$a[2];
0
добавлено
Рассмотрение единственного признака является tsql, и вопрос в качестве примера - tsql, это полностью вне темы.
добавлено автор Volvox, источник
Я don' t признают это tsql
добавлено автор t-clausen.dk, источник
Это было бы PHP.
добавлено автор acedanger, источник

Подробно останавливаясь на ответе Джастина. Это допускает ситуации, где часы больше, чем 2 цифры.

declare @time varchar(50) = '102:47:05'

SELECT cast(right(@time,2) AS int)+
       cast(left(right(@time,5),2) AS int)*60+ 
       cast(left(@time,len(@time)-6) AS int)*3600 AS seconds,
       (cast(right(@time,2) AS int)+
       cast(left(right(@time,5),2) AS int)*60+ 
       cast(left(@time,len(@time)-6) AS int)*3600)/60.0 AS minutes

Результат:

seconds     minutes
----------- ---------------------------------------
370025      6167.083333
0
добавлено
SqlCom.ru - Стиль жизни SQL
SqlCom.ru - Стиль жизни SQL
908 участник(ов)

Правила чата - https://t.me/sqlcom/88269 @sqlcom - основной канал (только MS SQL) @sql_ninja - второй канал (SQL вопросы начального уровня и свободное общение) @Gopnegbot - Викторина по SQL Server (наберите в привате /quiz). Предложения в @sql_ninja

SQL_Ninja
SQL_Ninja
340 участник(ов)

Правила чата - https://t.me/sqlcom/88269 @sqlcom - основной канал (только SQL) @sql_ninja - второй канал (SQL вопросы начального уровня и свободное общение) @Gopnegbot - Викторина по SQL Server (наберите в привате /quiz)