试图找出 MySQL 中两个日期之间的小时差异
Trying to find differences of hours between two dates in MySQL
我一直在尝试学习一些东西 SQL,但我在语言方面相当吃力。我试图从 table 中找出两个日期(出发和到达)之间的差异。其他地方已声明使用 DATEDIFF,但我试图直接从 table 中提取数据,而不是手动输入日期。这是我尝试使用此功能的可怕尝试
SELECT DATEDIFF(a.departure_time, a.arrival_time) as HourDiff;
FROM airlines a
WHERE HourDiff >= 8
我也在尝试找出超过 8 小时的时间差异,但老实说,我真的不知道我现在在做什么...我应该怎样写这篇文章?
尝试使用此查询:
SQL服务器的语法
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
如果您在 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);
如果您是 运行 MySQL 5.7 或更高版本,为了充分利用此查询,我建议添加一个 computed column 到你的 table:
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 更多列,并且您可能会接近类似的性能,具体取决于您在 SELECT
部分中添加的列数。
我一直在尝试学习一些东西 SQL,但我在语言方面相当吃力。我试图从 table 中找出两个日期(出发和到达)之间的差异。其他地方已声明使用 DATEDIFF,但我试图直接从 table 中提取数据,而不是手动输入日期。这是我尝试使用此功能的可怕尝试
SELECT DATEDIFF(a.departure_time, a.arrival_time) as HourDiff;
FROM airlines a
WHERE HourDiff >= 8
我也在尝试找出超过 8 小时的时间差异,但老实说,我真的不知道我现在在做什么...我应该怎样写这篇文章?
尝试使用此查询:
SQL服务器的语法
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
如果您在 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);
如果您是 运行 MySQL 5.7 或更高版本,为了充分利用此查询,我建议添加一个 computed column 到你的 table:
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 更多列,并且您可能会接近类似的性能,具体取决于您在 SELECT
部分中添加的列数。