【问题标题】:MYSQL date compare queryMYSQL日期比较查询
【发布时间】:2016-04-27 15:57:10
【问题描述】:

我正在尝试返回我知道在当前日期范围内尚未预订的车辆列表。我有一个 tblVehicles 表:

ID     Name
1      BMW
2      Merc
3      Land Rover
4      Hummer
5      Convertable

我还有一个表格 (tblDiary),其中包含车辆使用的所有日期:

ID     VehicleId     startDate     endDate
1      1             2016-06-20    2016-06-22
2      1             2016-06-24    2016-06-24
3      2             2016-05-01    2016-06-05

所以我正在尝试编写一个查询,以查找 2016 年 6 月 21 日和 2016 年 6 月 23 日之间可用的车辆。因此,在这种情况下,期望的结果是:

ID     Name
2      Merc
3      Land Rover
4      Hummer
5      Convertable

这样做最有效的方法是什么?

【问题讨论】:

    标签: mysql date compare


    【解决方案1】:
    SELECT  *
    FROM    tblVehicles v
    WHERE   NOT EXISTS
            (
            SELECT  NULL
            FROM    tblDiary d
            WHERE   d.vehicleId = v.id
                    AND endDate >= '2016-06-21'
                    AND startDate <= '2016-06-23'
            )
    

    【讨论】:

    • 我在我的(现已删除)答案中搞砸了,这个很完美。 +1
    • 这是完美的。非常感谢。我应该在 diray 表上放置索引以加快查询速度吗?
    • @JamesPrivett:是的,在(vehicleId, endDate)
    猜你喜欢
    • 1970-01-01
    • 2010-12-25
    • 1970-01-01
    • 2013-09-16
    • 2020-04-21
    • 1970-01-01
    • 2021-06-22
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多