Форум программистов, компьютерный форум, киберфорум
Наши страницы
Microsoft SQL Server
Войти
Регистрация
Восстановить пароль
 
ac1-caesar
124 / 3 / 0
Регистрация: 29.07.2013
Сообщений: 243
1

Прибавление времени к фиксированному значению

07.07.2014, 17:33. Просмотров 356. Ответов 7
Метки нет (Все метки)

Уважаемые форумчане!

Подскажите решение с построением запроса.
Есть таблица Flight с полями (тип time(7)) BlockStart - время старта и BlockEnd - время окончания.
Так же есть таблица RPlane с полем (тип int) StartTTSN - начальное значение.
Вычисления в минутах.
1) Высчитываю разницу между "BlockStart - время старта и BlockEnd - время окончания".

SQL
1
2
3
4
5
6
7
8
SELECT
(CASE 
WHEN F.BlockStart<F.BlockEnd THEN ((DATEPART(hh, F.BlockEnd)*60 + DATEPART(mi, F.BlockEnd)) - (DATEPART(hh, F.BlockStart)*60 + DATEPART(mi, F.BlockStart)))
WHEN F.BlockStart>F.BlockEnd THEN (((DATEPART(hh, F.BlockEnd)*60 + DATEPART(mi, F.BlockEnd))+1440) - (DATEPART(hh, F.BlockStart)*60 + DATEPART(mi, F.BlockStart)))
END)
FROM Flight F JOIN RPlane RP
ON F.ID_RPlane = RP.ID_RPlane
WHERE F.ID_RPlane =1 AND FillingDate BETWEEN RP.StartDate AND GETDATE()
2) Нужно к "StartTTSN - начальное значение" прибавлять разницу.
К примеру StartTTSN = 48634, разница "BlockStart - время старта и BlockEnd - время окончания" = 61 минута, значит в строке таблицы Flight должно быть 48695 и так далее...

Как так сделать?
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
07.07.2014, 17:33
Ответы с готовыми решениями:

прибавление к значению из innerHTML
вот примерный скрипт function edit_input(p){ var...

Прибавление к имеющемуся значению 1
Здарвствуйте, суть тему такова: у меня в таблице заказы идут под номерами А1,...

Прибавление целого числа к значению поля в бд
Доброго дня! Возник вопрос, как реализовать прибавление целого числа...

Прибавление к времени заданного количества секунд
На вход программе подается время в формате чч:мм:сс и количество секунд...

Прибавление к заданному числу единицы в цикле через определенные промежутки времени
помоги те пожалуйся решил попробовать цикл в C# не нашел то что мне нужно, ...

7
kodv
1419 / 1093 / 344
Регистрация: 11.04.2011
Сообщений: 2,606
Завершенные тесты: 1
07.07.2014, 20:01 2
DATEDIFF
0
ac1-caesar
124 / 3 / 0
Регистрация: 29.07.2013
Сообщений: 243
07.07.2014, 21:56  [ТС] 3
kodv, к чему это? Мне нужен нарастающий итог.
0
invm
1884 / 1276 / 380
Регистрация: 02.06.2013
Сообщений: 3,221
07.07.2014, 22:40 4
Цитата Сообщение от ac1-caesar Посмотреть сообщение
Мне нужен нарастающий итог.
T-SQL
1
2
3
4
5
6
7
8
SELECT
RP.StartTTSN + SUM((CASE 
WHEN F.BlockStart<F.BlockEnd THEN ((DATEPART(hh, F.BlockEnd)*60 + DATEPART(mi, F.BlockEnd)) - (DATEPART(hh, F.BlockStart)*60 + DATEPART(mi, F.BlockStart)))
WHEN F.BlockStart>F.BlockEnd THEN (((DATEPART(hh, F.BlockEnd)*60 + DATEPART(mi, F.BlockEnd))+1440) - (DATEPART(hh, F.BlockStart)*60 + DATEPART(mi, F.BlockStart)))
END)) over (order by (select 1))
FROM Flight F JOIN RPlane RP
ON F.ID_RPlane = RP.ID_RPlane
WHERE F.ID_RPlane =1 AND FillingDate BETWEEN RP.StartDate AND GETDATE()
Порядок нарастания зададите сами.
1
ac1-caesar
124 / 3 / 0
Регистрация: 29.07.2013
Сообщений: 243
07.07.2014, 22:47  [ТС] 5
Вот это спасибо!
0
kodv
08.07.2014, 06:03
  #6

Не по теме:

ac1-caesar, учитесь правильно формулировать вопрос. В первом посте вы сильно акцентируете внимание на вычислении разницы во времени. Зато по фразе "нарастающий итог" сразу получили нужный ответ

0
ac1-caesar
124 / 3 / 0
Регистрация: 29.07.2013
Сообщений: 243
08.07.2014, 10:43  [ТС] 7
Ребят, а подскажите как сделать упорядочивание по двум критериям? Я сделал упорядочивание по дате - FillingDate, но в сутках по несколько записей, теперь мне надо внутри суток сделать еще один порядок по BlockStart.
Пробовал так, но че то не хочет...
T-SQL
1
2
3
4
5
6
7
8
SELECT
RP.StartTTSN + SUM((CASE 
WHEN F.BlockStart<F.BlockEnd THEN ((DATEPART(hh, F.BlockEnd)*60 + DATEPART(mi, F.BlockEnd)) - (DATEPART(hh, F.BlockStart)*60 + DATEPART(mi, F.BlockStart)))
WHEN F.BlockStart>F.BlockEnd THEN (((DATEPART(hh, F.BlockEnd)*60 + DATEPART(mi, F.BlockEnd))+1440) - (DATEPART(hh, F.BlockStart)*60 + DATEPART(mi, F.BlockStart)))
END)) over (order by (F.FillingDate(order by(F.BlockStart))))
FROM Flight F JOIN RPlane RP
ON F.ID_RPlane = RP.ID_RPlane
WHERE F.ID_RPlane =1 AND F.FillingDate BETWEEN RP.StartDate AND GETDATE()
С замечанием kodv согласен, формулировка не совсем корректна (новичок), правда изначально акцента на разницу во времени не было.
0
invm
1884 / 1276 / 380
Регистрация: 02.06.2013
Сообщений: 3,221
08.07.2014, 11:14 8
Цитата Сообщение от ac1-caesar Посмотреть сообщение
теперь мне надо внутри суток сделать еще один порядок по BlockStart.
Все ваши проблемы от нежелания читать документацию.
T-SQL
1
order by F.FillingDate, F.BlockStart
1
08.07.2014, 11:14
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
08.07.2014, 11:14

Выход из интегрирования системы ОДУ (Given...Odesolve) по значению некоторого параметра (не времени)
Как организовать выход из интегрирования системы ОДУ методом, например,...

Вопрос по фиксированному размеру формы
Здравствуйте, хочу сделать фиксированный размер формы, чтобы в правом верхнем...

Псевдокласс target. Переход к фиксированному блоку
Есть ссылка, связанная посредством псевдокласса target через id с определенным...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
8
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru