首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >MySQL上的搜索日期范围

MySQL上的搜索日期范围
EN

Stack Overflow用户
提问于 2022-09-06 19:57:28
回答 2查看 43关注 0票数 0

我想找到没有我传递的日期范围的产品(它将是一个参数)。我能够写这个查询,但是它是有限的,因为它不考虑带有以前的“签入”或稍后的“签出”的预订。

你能帮帮我吗?

代码语言:javascript
复制
SELECT *
FROM bookings b
  right join products p ON b.product_id = p.id
WHERE b.check_in_date >= '2022-11-10' AND NOT b.check_out_date <= '2022-11-25';

输出将是所有的产品,没有任何预订日期在范围内。

EN

回答 2

Stack Overflow用户

发布于 2022-09-06 23:26:40

我发这篇文章是为了回答这个问题,因为我不能发表评论,但是我想说:

代码语言:javascript
复制
SELECT *
FROM bookings b
  right join products p ON b.product_id = p.id
WHERE NOT (b.check_in_date >= '2022-11-10' AND b.check_out_date <= '2022-11-25');

这样就得到了所有不在范围内的预订?

注:这相当于:

代码语言:javascript
复制
...WHERE b.check_in_date < '2022-11-10' OR b.check_out_date > '2022-11-25'
票数 0
EN

Stack Overflow用户

发布于 2022-09-07 12:12:54

你从预订中得到了数据,但你说你想要产品。所以,我会这样做:

代码语言:javascript
复制
SELECT * FROM products p
JOIN bookings b ON b.product_id = p.id
WHERE b.productId NOT IN 
(SELECT bo.productId FROM bookings bo 
WHERE bo.check_in_date >= '2022-11-10'
AND b.check_out_date <='2022-11-25');

没有测试过,但至少应该给你一个思考的方法。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/73627168

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档