powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Суммирование данных времени .... Помогите!!
10 сообщений из 10, страница 1 из 1
Суммирование данных времени .... Помогите!!
    #32076277
lerner
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Есть поле Col003 тип данных varchar данные вида ч:мм:cc (длительность часы минуты секунды) как суммировать эти данные по всему столбцу чтобы получилась общая длительность времени. В экселе все корректно складывается (там есть тип данных "время"). Как это сделать в базе MS SQL 2000? (ну новичек я в SQL)
...
Рейтинг: 0 / 0
Суммирование данных времени .... Помогите!!
    #32076295
Фотография Left Margin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
тип данных DATETIME или SMALLDATETIME
...
Рейтинг: 0 / 0
Суммирование данных времени .... Помогите!!
    #32076306
learner
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Переделываю, EM ругается
- Warning: Data may be lost converting column 'Col003' from 'varchar(255)'.
нажимаю YES, в результате получается по всему полю 01.01.1900
...
Рейтинг: 0 / 0
Суммирование данных времени .... Помогите!!
    #32076307
Israel Bender
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
перевиди все в секунды да послагай,а сумму потом перевиди в года и столетия,не думай о мгновеньях свысока.
...
Рейтинг: 0 / 0
Суммирование данных времени .... Помогите!!
    #32076314
Фотография OlegAxenow
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Может есть более красивые пути решения данной проблемы, но навскидку ничего не придумал...

Если строго следовать формулировке задачи и не пользоваться вычислимыми полями и представлениями, то можно написать следующий запрос (для простоты понимания я разнес его на несколько подзапросов):
Код: plaintext
1.
2.
3.
4.
5.
select sec/ 3600  as hh, sec% 3600 / 60  as mi, sec% 60  as ss from
(
select datepart(hh,dt)* 3600 +datepart(mi,dt)* 60 +datepart(ss,dt) as sec
from (select cast(Col003 as datetime) as dt from source) sq1
) sq2


Если cast не будет работать, - помотреть на формат записи и использовать convert/set dateformat.
С уважением, Олег Аксенов.
...
Рейтинг: 0 / 0
Суммирование данных времени .... Помогите!!
    #32076366
Фотография MiCe
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
в mssql 0 и 01.01.1900 00:00:00.000 одно и тоже....
если у вас показывает 01.01.1900 - это еще не значит что не правильно....
посмотрите время.... может оно у вас не отображается?
...
Рейтинг: 0 / 0
Суммирование данных времени .... Помогите!!
    #32076556
learner
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Получается что при конвертировании данных из текстового файла в базу MS SQL, сиквел не понимает что это поле формата "время" (даже если я ему на это укажу) и присваивет ему тип varchar и далее начинаются проблемы, переделать тип данных в datetime я не могу, данные пропадают (вижу только 01.01.1900 ), почему все это происходит? Неужели поле должно содержать обязательно дату и время? Зачем для выполнение простой операции суммирования данных формата времени нужно все в секунды переделывать и далее городить огород (я все Эксель вспоминаю, там нет такой проблемы). Существуют ли другие способы более простые и понятные? Если можно по-конкретнее, если кто знает. Заранее спасибо всем.
...
Рейтинг: 0 / 0
Суммирование данных времени .... Помогите!!
    #32076636
Fil
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Fil
Гость
Код: plaintext
1.
2.
3.
declare @s varchar( 8 ) ,@s1 varchar( 8 )
set @s='01:02:56'
set @s1='02:38:45'
select convert(varchar( 8 ),(convert(datetime ,@s, 114 )+ convert(datetime ,@s1, 114 )), 114 )
...
Рейтинг: 0 / 0
Суммирование данных времени .... Помогите!!
    #32076695
funikovyuri
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
declare @table1 table( time_str varchar(10) )

insert @table1
select '12:40:50'

select cast( ('1.1.1900 ' + time_str) as datetime ) from @table1
...
Рейтинг: 0 / 0
Суммирование данных времени .... Помогите!!
    #32076738
Arch-saint
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
select cast(s/3600 as varchar(50))+':'+cast((s%3600)/60 as varchar(50))+':'+cast(s%60 as varchar(50))
from
(select
sum(cast(SUBSTRING(col003,1,CHARINDEX(':', col003)-1) as integer)*3600+
cast(SUBSTRING(col003,CHARINDEX(':', col003)+1,CHARINDEX(':', col003, CHARINDEX(':', col003)+1)-1-CHARINDEX(':', col003)) as integer)*60+
cast(SUBSTRING(col003,CHARINDEX(':', col003, CHARINDEX(':', col003)+1)+1, LEN(col003)-CHARINDEX(':', col003, CHARINDEX(':', col003)+1)) as integer)) as s
from test_tbl) as tbl1
...
Рейтинг: 0 / 0
10 сообщений из 10, страница 1 из 1
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Суммирование данных времени .... Помогите!!
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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