Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности
|
|
|
При вычислении времени появляются миллисекунды.
|
|||
|---|---|---|---|
|
#18+
При работе с типом данных datetime, когда происходит сложение времени появляются миллисекунды, хотя при заполнении поля их не указываю. И в итоге получается неверный резултат(разница от 1 до 3 сек.). Как окончательно изавиться от миллисекунд? Кто знает подскажите? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.07.2001, 14:01 |
|
||
|
При вычислении времени появляются миллисекунды.
|
|||
|---|---|---|---|
|
#18+
Вы бы продемонстрировали как они (миллисекунды) возникают. У меня к примеру не возникают declare @d1 datetime,@d2 datetime select @d1='20010105' select @d2='00:15:11' select @d1+@d2 ---------------------------------- 2001-01-05 00:15:11.000 (1 row(s) affected) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.07.2001, 14:25 |
|
||
|
При вычислении времени появляются миллисекунды.
|
|||
|---|---|---|---|
|
#18+
Пример из StoredProc. Используется для формирования отчета. В поле Rolik_len содержится время ролика например '00:02:23'. SELECT ISNULL(convert(varchar(10),CAST(SUM(CAST(convert(datetime, dbo.Roller.Rolik_len, AS real)) AS datetime), , '---') FROM dbo.RollerInBlock INNER JOIN dbo.Roller ON dbo.RollerInBlock.ID_Rolik = dbo.Roller.ID_Rolik INNER JOIN dbo.Block ON dbo.RollerInBlock.Block_ID = dbo.Block.Block_ID INNER JOIN dbo.Playlist ON dbo.Block.ID_Playlist=dbo.Playlist.ID_Playlist WHERE (dbo.Playlist.Playlist_Date =@Date ) AND (dbo.Roller.ID_customer = @ID_Customer) AND (dbo.Playlist.ID_Channel=@ID_Channel) -------------------------- 1900-01-01 00:14:23.993 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.07.2001, 05:48 |
|
||
|
При вычислении времени появляются миллисекунды.
|
|||
|---|---|---|---|
|
#18+
Можно попроще. declare @t1 datetime, @t2 datetime, @t3 datetime, @t4 datetime, @t5 datetime select @t1='00:01:03', @t2='00:00:47', @t3='00:02:19', @t4='00:00:34', @t5='00:04:56' print convert(varchar(30),cast(cast(@t1+@t2+@t3+@t4+@t5 as real)as datetime),14) ------------------------------------------------------------------------- 00:09:38:997 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.07.2001, 06:31 |
|
||
|
При вычислении времени появляются миллисекунды.
|
|||
|---|---|---|---|
|
#18+
Замените real на float. Сравните: declare @t table(d datetime) insert @t select '05:55:55' insert @t select '04:44:44' insert @t select '03:33:33' insert @t select '02:22:22' insert @t select '01:11:11' select convert(datetime,sum(convert(float,d))) from @t select convert(datetime,sum(convert(real,d))) from @t ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.07.2001, 06:53 |
|
||
|
При вычислении времени появляются миллисекунды.
|
|||
|---|---|---|---|
|
#18+
Попробовал ваш пример. Считает все точно. А в моем примере опять прибавляет миллисекунды. select convert(datetime,sum(convert(float,Block_len,),14) from Block ----------------------------------- 1899-12-20 00:09:10.003 (1 row(s) affected) А при конвертировании в real было: select convert(datetime,sum(cast(Block_len as real)),14) from Block ----------------------------------- 1899-12-20 00:09:09.983 (1 row(s) affected) С float немного точнее, но опять неверно. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.07.2001, 07:54 |
|
||
|
При вычислении времени появляются миллисекунды.
|
|||
|---|---|---|---|
|
#18+
Есть еще вариант: set nocount on declare @t table(d datetime) insert @t select '05:55:55' insert @t select '04:44:44' insert @t select '03:33:33' insert @t select '02:22:22' insert @t select '01:11:11' select dateadd (ss,sum(datediff(ss,'00:00:00', d)),'00:00:00') from @t ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.07.2001, 09:04 |
|
||
|
При вычислении времени появляются миллисекунды.
|
|||
|---|---|---|---|
|
#18+
Andrey! Ну а что собственно Вы хотите? Время храниться как часть времени суток, т.е. как дробная часть числа. Поскольку количество секунд в сутках не пропорционально никакой степени 10 всегда происходит округление, а при всяких операциях ошибка округления накапливается. И при большей размерности числа это произойдет несколько позже(при большем количестве слагаемых), но произойдет обязательно. Так что просто удивляюсь Вашей наивности в этом вопросе Что можно сделать? Два варианта 1. Округлять полученный результат 2. Хранить продолжительность в секундах ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.07.2001, 09:07 |
|
||
|
При вычислении времени появляются миллисекунды.
|
|||
|---|---|---|---|
|
#18+
Спасибо Всем. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.07.2001, 09:16 |
|
||
|
|

start [/forum/topic.php?fid=46&fpage=3559&tid=1826096]: |
0ms |
get settings: |
5ms |
get forum list: |
14ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
29ms |
get topic data: |
10ms |
get forum data: |
2ms |
get page messages: |
45ms |
get tp. blocked users: |
1ms |
| others: | 214ms |
| total: | 326ms |

| 0 / 0 |
