【问题标题】:MySQL select where timestamps don't overlapMySQL选择时间戳不重叠的地方
【发布时间】:2017-05-26 04:26:31
【问题描述】:

每个用户在一个表中有多个针对他们的预订,我需要获取用户详细信息和预订详细信息,其中预订开始和结束日期与用户通过的日期不重叠。

用户

id | name
---------
1  | Ryan
2  | Dave

user_bookings

id | user_id | title         | start_date | end_date
------------------------------------------------------
1  | 1       | Booking One   | 1484133562 | 1484133562
2  | 1       | Booking Two   | 1484133562 | 1484133562
3  | 2       | Booking Three | 1484133562 | 1484133562

网站用户可以搜索在指定时间有预订的用户。所以他们可以搜索像:01/01/201705/01/2017 这样的日期,如果 user_id 1 在此期间有预订,他们不会出现在结果中。

我目前有一个查询:

SELECT 
users.name, 
user_bookings.name 
FROM users 
JOIN user_bookings ON users.id = user_bookings.user_id
WHERE NOT(('$start_date' <= user_bookings.start_date) AND (user_bookings.end_date <= '$end_date')) GROUP BY users.id;

【问题讨论】:

    标签: mysql


    【解决方案1】:
    SELECT users.name, user_bookings.name 
    FROM users 
    JOIN user_bookings ON users.id = user_bookings.user_id
    WHERE NOT ((DATE_FORMAT(user_bookings.start_date,'%m/%d/%Y') >= '$start_date' AND DATE_FORMAT(user_bookings.end_date,'%m/%d/%Y') <= '$end_date')) AND users.id = 1
    GROUP BY users.id;
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-02-16
      • 2013-03-02
      • 2013-01-07
      • 2012-08-08
      • 2014-03-10
      • 2014-01-16
      • 2011-12-03
      • 2013-03-28
      相关资源
      最近更新 更多