计算数据类型为TIME的十进制数

时间:2019-04-12 19:15:56

标签: mysql sql mysql-workbench

我现在正在做一个学校项目,这需要我使用SQL从数据库中生成一些表。我们有15个问题,目的是回答所有问题,并显示您用来生成结果的查询。

我们现在要回答的问题是:从阿姆斯特丹飞往纽约的航班的到达时间是多少,该航班的日期为2018年4月15日。

我们使用的是我使用从任务中获得的一些信息构建的ERD。

这就是我们想出的。这有一个小错误,即IATA_Code不是整数,而是varchar(对不起,其中一些名称是荷兰语)。

enter image description here

现在,问题是当我尝试向vertrektijd添加内容时,这意味着开始时间,它不起作用。我得到一个像6,2小时的数字,需要将其转换为小时,分钟,秒,然后将其添加到开始时间。无论我尝试什么,都行不通

我尝试使用date_adddateadd之类的功能以及更多其他功能。但是我似乎无法将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);

所以我要做的是将小时内的扇区.afstand / vliegtuig.snelheid的结果添加到vlucht.vertrektijd

但是无论我怎样尝试,我似乎都无法正常工作。我以前从未使用过StackOverflow,因为我想自己解决问题,但是现在我不知道该怎么办。

对于一个可以理解所有这些的神奇人物,您介意向我解释我做错了什么,以便我解决并转到下一个任务吗?

感谢您的关注:)

1 个答案:

答案 0 :(得分:0)

如果您知道一次飞行的持续时间以小时为单位(可以是小数),则可以乘以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