mysql - 如何根据sql中最近的时间比较2条记录

标签 mysql sql-server

有两个表 第一个有预定时间

BusDepartureStation   ArrivalStation  DepartureTime
A                         B             10:00
A                         B             13:00
C                         D             18:00
C                         D             22:00

第二个表有实际时间

BusDepartureStation   ArrivalStation  DepartureTime
A                         B             10:15
A                         B             13:30
c                         D             18:10
C                         D             22:00

最佳答案

select
    s.BusDepartureStation, s.BusArrivalStation, s.DepartureTime,
    dateadd(
        mi,
        min(case
            when d.DepartureTime >= s.DepartureTime
            then datediff(mi, s.DepartureTime, d.DepartureTime), s.DepartureTime)
            else null
        end),
        s.DepartureTime
    ) as NextNearestDepartureTime
from Scheduled s inner join Departed d
    on      d.BusDepartureStation = s.BusDepartureStation
        and d.ArrivalStation = s.ArrivalStation
group by
    s.BusDepartureStation, s.BusArrivalStation, s.DepartureTime

为此,我假设您的出发时间永远不会提前,并且较早的预定出发时间总是先于随后的巴士出发。如果我对 SQL Server 的假设不正确,您应该能够调整时差逻辑以使用 MySQL 函数。

关于mysql - 如何根据sql中最近的时间比较2条记录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33843572/

相关文章:

mysql - 具有 group by 和 having in 条件的复杂 SQL 查询

sql-server - alter table add bit column as case when 情况

sql-server - ssis 派生组件中的 isdate 函数

sql - 将列添加到 SQL 查询结果

MySQL 将字符串转换为日期(以毫秒为单位)

mysql - 缺月补零

sql-server - 在Powershell中查询SqlServer

sql-server - 通过 Spark 将 csv 文件加载到现有的 HIVE 表

mysql - 在mysql中创建 View 时出错。而独立运行时查询运行正确

mysql - 使用 SELECT 更新,它会锁定每一行或所有 SELECTed 记录