【问题标题】:mysql query function - date rangemysql查询函数-日期范围
【发布时间】:2015-11-30 21:39:35
【问题描述】:

这是我的数据结构:

seasons
id  from         to           name
-----------------------------------------
1   2015-11-01   2015-12-15   season1
2   2015-12-16   2015-12-30   season2
3   2015-12-31   2016-01-20   season3

我需要一个 sql 查询,它将返回日期范围 2015-12-102015-12-20 之间的所有记录 - 这将是记录 1 和 2。 有什么想法吗?

【问题讨论】:

  • 查看 BETWEEN 的工作原理。这几乎是“日期在 thisdate 和 thatdate 之间的位置”
  • 但 BETWEEN 运算符不只是一个日期.. 我想将一个范围与另一个范围进行比较
  • 您似乎正在关注 overlapping 间隔检测。 BETWEEN 运算符在这种情况下将不起作用。

标签: mysql date range


【解决方案1】:

日期重叠的最佳解释Determine Whether Two Date Ranges Overlap

SELECT *
FROM YourTable
WHERE `from` <= '2015-12-20'
  AND `to` >= '2015-12-10'

请不要使用from等保留字作为字段名

【讨论】:

    【解决方案2】:

    您应该使用BETWEEN 运算符。

    喜欢这里: How do I query between two dates using MySQL?

    编辑:

    根据您的数据结构,您可以使用 > 和

    SELECT * FROM `seasons` 
    WHERE from > '2015-12-10' AND to < '2015-12-20'
    

    【讨论】:

    • 这真的应该留作评论。这不是一个真正的答案。或者,更具体地说,你的答案。
    猜你喜欢
    • 1970-01-01
    • 2014-01-07
    • 2011-01-01
    • 2020-10-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-09-24
    相关资源
    最近更新 更多