datediff—尝试在mysql中查找两个日期之间的小时差异

bfnvny8b  于 2021-06-20  发布在  Mysql
关注(0)|答案(2)|浏览(584)

我一直在努力学习一些sql语言,但我在努力学习这门语言。我试着从一张table上找出两个日期(出发和到达)的区别。其他地方已经声明使用datediff,不过我尝试直接从表中提取数据,而不是手动键入日期。下面是我尝试使用这个函数的可怕尝试

SELECT DATEDIFF(a.departure_time, a.arrival_time) as HourDiff;
FROM airlines a
WHERE HourDiff >= 8

我也试图找出超过8小时的时间差异,但老实说,我真的不知道我现在在做什么。。。我应该怎么写这个?

ubbxdtey

ubbxdtey1#

尝试使用此查询:
sql server的语法

SELECT DATEDIFF(hour, a.departure_time, a.arrival_time) as HourDiff
FROM airlines a
WHERE DATEDIFF(hour, a.departure_time, a.arrival_time) >= 8

mysql的语法

SELECT TIMESTAMPDIFF(hour, a.departure_time, a.arrival_time) as HourDiff
FROM airlines a
WHERE TIMESTAMPDIFF(hour, a.departure_time, a.arrival_time) >= 8
kuarbcqp

kuarbcqp2#

如果你在 departure_time 列,则如果使用以下内容,可能会得到更好的结果:

SELECT DATEDIFF(hour, a.departure_time, a.arrival_time) as HourDiff
FROM airlines a
WHERE a.departure_time >= DATE_ADD(hour, -8, a.arrival_time);

如果您运行的是MySQL5.7或更高版本,为了充分利用此查询,我建议您在表中添加一个计算列:

ALTER TABLE airlines 
ADD HourDiff Integer AS DATEDIFF(hour, departure_time, arrival_time);

然后,我将继续在此列上创建索引:

ALTER TABLE airlines 
ADD INDEX HoursDiff_IX (HourDiff);

然后您可以将查询简化为:

SELECT HourDiff
FROM airlines
WHERE HourDiff >= 8;

您甚至可以继续在查询中选择更多的列,您可能会获得类似的性能,这取决于您在查询中添加了多少列 SELECT 部分。

相关问题