Расчет десятичного числа для типа данных ВРЕМЯ - PullRequest
0 голосов
/ 12 апреля 2019

Я сейчас работаю над школьным проектом, который требует от меня создания некоторых таблиц с использованием SQL из базы данных. У нас 15 вопросов, и цель состоит в том, чтобы ответить на все из них и показать запрос, который вы использовали для получения своего результата.

Вопрос, на который мы сейчас отвечаем: каково время прибытия рейса между Амстердамом и Нью-Йорком, дата этого рейса 15-04-2018.

мы используем ERD, который я создаю, используя некоторую информацию, полученную из задания.

Это то, что мы придумали. В этом есть одна небольшая ошибка: IATA_Code - не целое число, а varchar (извините, некоторые имена указаны на голландском языке).

enter image description here

Теперь проблема в том, что когда я пытаюсь что-то добавить к vertrektijd, что означает время запуска, это не работает. Я получаю число, например, 6,2 часа, которое необходимо преобразовать в часы, минуты, секунды, а затем добавить к начальному времени. Что бы я ни пытался, это не работает

Я пытался использовать такие функции, как date_add, dateadd и многие другие. Но, похоже, мне не удается преобразовать 6,25 часа в фактическое время, что приводит к сбою всего этого

select distinct(DATEADD(hour, sector.Afstand/vliegtuig.Snelheid, vlucht.vertrektijd) AS DateAdd)
from sector, vlucht, vliegtuig
where vlucht.datum = '2018-04-15'
and vlucht.VluchtNr = '2513'
and sector.afstand IN (SELECT sum(sector.afstand) AS totale_afstand 
FROM  vlucht, routesector,sector
where routesector.Vlucht_VluchtNr = vlucht.VluchtNr 
AND routesector.Sector_SectorNr = sector.SectorNr 
and vlucht.datum = '2018-04-15'
AND vlucht.VluchtNr = '2513'
group by routesector.Vlucht_VluchtNr
order by totale_afstand);

Итак, что я хочу сделать, это добавить результат sector.afstand / vliegtuig.snelheid за несколько часов в vlucht.vertrektijd

Но что бы я ни пытался, я не могу заставить его работать. Я никогда раньше не использовал StackOverflow, так как мне нравится решать проблемы самостоятельно, но сейчас я не знаю, что делать.

Для удивительного человека, который может понять все это, не могли бы вы объяснить мне, что я сделал не так, чтобы я мог решить эту проблему и перейти к следующему заданию?

спасибо за внимание :) 1028 *

1 Ответ

0 голосов
/ 12 апреля 2019

Если вы знаете, что продолжительность полета указана в часах (может быть дробной), вы можете преобразовать ее в минуты, умножив на 60, а затем использовать dateadd:

declare @t datetime
set @t='1/1/2019 3:15'
set @t=dateadd(MI, 6.25*60, @t)
print @t

Jan  1 2019  9:30AM
...