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

Откуда:
Сообщений: 110
Привет всем.

Объясните, пжл, как можно изменить отображение времени из, например, 26.2655 секунд в 0:00:26.2655? Чтобы тип был datetime.

Спасибо.
29 апр 15, 18:02    [17583025]     Ответить | Цитировать Сообщить модератору
 Re: Как преобразовать вид времени  [new]
Гавриленко Сергей Алексеевич
Member

Откуда: Moscow
Сообщений: 37228
Никак, ибо у datetime нет такой точности.
29 апр 15, 18:04    [17583037]     Ответить | Цитировать Сообщить модератору
 Re: Как преобразовать вид времени  [new]
maksim.yugai
Member

Откуда:
Сообщений: 110
Гавриленко Сергей Алексеевич,

И, например, 80 секунд нельзя преобразовать в 0:01:20? Тип datetime не обязателен. Главное, чтобы отображалось таким образом и высчитывало минуты.
29 апр 15, 18:12    [17583074]     Ответить | Цитировать Сообщить модератору
 Re: Как преобразовать вид времени  [new]
Владислав Колосов
Member

Откуда:
Сообщений: 8584
select cast((dateadd(ss,80,'19000101')) as time)
29 апр 15, 18:27    [17583125]     Ответить | Цитировать Сообщить модератору
 Re: Как преобразовать вид времени  [new]
maksim.yugai
Member

Откуда:
Сообщений: 110
Владислав Колосов,

Спасибо. То что нужно.
2 май 15, 08:12    [17593284]     Ответить | Цитировать Сообщить модератору
 Re: Как преобразовать вид времени  [new]
maksim.yugai
Member

Откуда:
Сообщений: 110
Владислав Колосов,

А вы не в курсе, как можно показать время в формате ЧЧЧ:ММ:СС, чтобы часы накапливались, т.е., если длительность переваливает за 23:59:59, необходимо, чтобы часы показывали 25 и т.д. Например, код

select sum(LenTime)
from [cc_temp].[dbo].[A_Cube_CC_OperatorStates]
where State = 10 
	and DateTimeStart between '2015-04-01 09:00:00.000' and '2015-04-30 18:00:00.000'

показывает длительность 162774,76 в секундах.

Тут мы показываем в формате времени:

select dateadd(ss, sum(LenTime), '19000101')
from [cc_temp].[dbo].[A_Cube_CC_OperatorStates]
where State = 10
	and DateTimeStart between '2015-04-01 09:00:00.000' and '2015-04-30 18:00:00.000'

Ответ будет следующим: 1900-01-02 21:12:54.000. Это 45,21521 часов. Время перешло за 24 часа, сутки прибавились.

Необходимо, чтобы отображалось в виде 45:12:54 и сутки, соответственно, не увеличивались.
2 май 15, 13:24    [17593851]     Ответить | Цитировать Сообщить модератору
 Re: Как преобразовать вид времени  [new]
stdvb
Member

Откуда:
Сообщений: 40
select	'1900-01-01 ' +
	cast (cast (162774.76 as int) / (60 * 60) as varchar(16)) + ':' +
	cast (cast (162774.76 as int) % (60 * 60) / 60 as varchar(2)) + ':' +
	cast (cast (162774.76 as int) % 60 as varchar(2))
2 май 15, 14:35    [17594047]     Ответить | Цитировать Сообщить модератору
 Re: Как преобразовать вид времени  [new]
maksim.yugai
Member

Откуда:
Сообщений: 110
stdvb,

Спасибо.
2 май 15, 14:52    [17594100]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить