Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 показать секунды в формате минут (с дробной частью)  [new]
alexxUK
Member

Откуда: Украина
Сообщений: 81
Всем доброго времени суток.
вот возникала такая задачка. В базе в поле хранится время в секундах - необходимо отобразить его в минутах ( с дробной частью) - формата 60 = 1; 75 = 1.25; 90 = 1.5;

в качестве теста у меня 943 = 15.72
ничего умнее не написалось, как вот так
CAST(c3.TimeInSec/60 As Decimal(10,2)) + CAST(CAST((c3.TimeInSec%60) As Decimal(10,2))/60 as Decimal(10,2)) TimeInMin

ну или вот так
c3.TimeInSec/60 + CAST(CAST((c3.TimeInSec%60) As Decimal(10,2))/60 as Decimal(10,2)) TimeInMin


возникло пару вопросов
1) а никак нельзя отказаться от 2 кастов во второй части выражения - а то без них обоих результат получается с пустой дробной частью.

Например вот так
c3.TimeInSec/60 + CAST((c3.TimeInSec%60)/60 as Decimal(10,2)) TimeInMin

выдает в ответе 15.00

2) Есть ли смысл кастить первую чатсь запроса, или это не обязательно делать, (все равно первой частью выражения будет int)?

Заранее спасибо за ответы, пинки в нужном направлении
14 окт 13, 14:00    [14966854]     Ответить | Цитировать Сообщить модератору
 Re: показать секунды в формате минут (с дробной частью)  [new]
alexxUK
Member

Откуда: Украина
Сообщений: 81
да, забыл сказать - тип поля в базе = int
14 окт 13, 14:01    [14966867]     Ответить | Цитировать Сообщить модератору
 Re: показать секунды в формате минут (с дробной частью)  [new]
Гость333
Member

Откуда:
Сообщений: 3683
alexxUK
c3.TimeInSec/60 + CAST((c3.TimeInSec%60)/60. as Decimal(10,2)) TimeInMin
14 окт 13, 14:08    [14966932]     Ответить | Цитировать Сообщить модератору
 Re: показать секунды в формате минут (с дробной частью)  [new]
petre
Member

Откуда: Кривой Рог
Сообщений: 42
А почему не сделать одной операцией:
CAST(c3.TimeInSec/60.0 As Decimal(10,2))

declare @s int
set @s=943
select @s, cast(@s/60+@s%60/60.0 as decimal(10,2)), cast(@s/60.0 as decimal(10,2))
?
14 окт 13, 14:24    [14967067]     Ответить | Цитировать Сообщить модератору
 Re: показать секунды в формате минут (с дробной частью)  [new]
prog882
Guest
alexxUK, может так?

declare @t table (sec int)
insert into @t
select 75 union all 
select 90 union all
select 943

select result=cast(sec/60. as decimal (10,2))
from @t
14 окт 13, 14:32    [14967129]     Ответить | Цитировать Сообщить модератору
 Re: показать секунды в формате минут (с дробной частью)  [new]
alexxUK
Member

Откуда: Украина
Сообщений: 81
всем огромное спасибо за идеи!
варианты работают - почему не сделал одним запросом - видимо просто протупил, начал играться с составной операцией, хотя все должно было быть намного проще (что тут и доказали)!

Всем хорошоего дня.
14 окт 13, 14:51    [14967302]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить