powered by simpleCommunicator - 2.0.59     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Как просуммировать тип datetime
6 сообщений из 6, страница 1 из 1
Как просуммировать тип datetime
    #32010182
Andrey
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Кто знает как в запросе просуммировать столбец с типом datetime? В поле Block_len - время, например '00:24:10'.
1.Пробую так.
select sum(Block_len)
from block
-----------
Результат.
Server: Msg 409, Level 16, State 2, Line 4
The sum or average aggregate operation cannot take a datetime data type as an argument.

2.Пробую так.
declare @t1 datetime, @t2 datetime, @t3 datetime, @t4 datetime, @t5 datetime
select @t1='00:01:03', @t2='00:00:47', @t3='00:00:19', @t4='00:00:34', @t5='00:00:56'
print convert(varchar(30),@t1+@t2+@t3+@t4+@t5,14)
-----------------------
Результат.
00:03:39:000

Считает правильно. Но нужно, чтобы работал первый запрос.
3.Пробую так.
select cast(sum(cast(Block_len as real))as datetime)
from Block
-----------------------------------
1899-12-20 00:09:09.983

(1 row(s) affected)
Появляются миллисекунды, которые не нужны и результат из-за них неверный.
Help.
...
Рейтинг: 0 / 0
Как просуммировать тип datetime
    #32010190
cube
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Во всяком случае можно выделит часы, минуты секунды. К ним применить SUM и выполнить необходимые преобразования, либо сначала перевести все в секунды, просуммировать, а потом "разложить" на h,m,s.
...
Рейтинг: 0 / 0
Как просуммировать тип datetime
    #32010191
Фотография alexeyvg
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Нужно писать
select cast(sum(cast(Block_len as float))as datetime)
from Block

Дело в том, что datatime - это на самом деле тип double и у Вас происходит потеря точности.
...
Рейтинг: 0 / 0
Как просуммировать тип datetime
    #32010193
Фотография alexeyvg
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Нужно писать
select cast(sum(cast(Block_len as float))as datetime)
from Block

Дело в том, что datatime - это на самом деле тип double и у Вас происходит потеря точности.
...
Рейтинг: 0 / 0
Как просуммировать тип datetime
    #32010194
andy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
create table #atable (column1 datetime)

insert into #atable (column1)values('1988-01-01 10:00:00')

insert into #atable (column1)values('10:00:00')
insert into #atable (column1)values('11:00:00')
insert into #atable (column1)values('12:00:00')
insert into #atable (column1)values('13:00:00')

declare @dsum as datetime
set @dsum = '1900-01-01 00:00:00'
select @dsum = @dsum + column1 from #atable

print @dsum
...
Рейтинг: 0 / 0
Как просуммировать тип datetime
    #32010197
Фотография SergSuper
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Дело в том, что datatime - это на самом деле тип double и у Вас происходит потеря точности


хе-хе
Потеря точности уже заложена в формат datetime:

Date and time data from January 1, 1753 through December 31, 9999, to an accuracy of one three-hundredth of a second (equivalent to 3.33 milliseconds or 0.00333 seconds). Values are rounded to increments of .000, .003, or .007 seconds ...

Так что остаётся только с ней (с потерей точности) смириться
...
Рейтинг: 0 / 0
6 сообщений из 6, страница 1 из 1
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Как просуммировать тип datetime
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]