Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности
|
|
|
Как просуммировать тип datetime
|
|||
|---|---|---|---|
|
#18+
Кто знает как в запросе просуммировать столбец с типом 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. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.07.2001, 07:19 |
|
||
|
Как просуммировать тип datetime
|
|||
|---|---|---|---|
|
#18+
Во всяком случае можно выделит часы, минуты секунды. К ним применить SUM и выполнить необходимые преобразования, либо сначала перевести все в секунды, просуммировать, а потом "разложить" на h,m,s. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.07.2001, 08:48 |
|
||
|
Как просуммировать тип datetime
|
|||
|---|---|---|---|
|
#18+
Нужно писать select cast(sum(cast(Block_len as float))as datetime) from Block Дело в том, что datatime - это на самом деле тип double и у Вас происходит потеря точности. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.07.2001, 08:49 |
|
||
|
Как просуммировать тип datetime
|
|||
|---|---|---|---|
|
#18+
Нужно писать select cast(sum(cast(Block_len as float))as datetime) from Block Дело в том, что datatime - это на самом деле тип double и у Вас происходит потеря точности. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.07.2001, 08:49 |
|
||
|
Как просуммировать тип datetime
|
|||
|---|---|---|---|
|
#18+
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 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.07.2001, 08:57 |
|
||
|
Как просуммировать тип datetime
|
|||
|---|---|---|---|
|
#18+
Дело в том, что 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 ... Так что остаётся только с ней (с потерей точности) смириться ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.07.2001, 09:13 |
|
||
|
|

start [/forum/topic.php?fid=46&fpage=3559&tid=1826103]: |
0ms |
get settings: |
6ms |
get forum list: |
10ms |
check forum access: |
2ms |
check topic access: |
2ms |
track hit: |
29ms |
get topic data: |
8ms |
get forum data: |
2ms |
get page messages: |
28ms |
get tp. blocked users: |
1ms |
| others: | 231ms |
| total: | 319ms |

| 0 / 0 |
