【问题标题】:MySQL Selecting Dates Within Number of DaysMySQL选择天数内的日期
【发布时间】:2015-09-15 07:29:05
【问题描述】:

我有一个类似这样的 MySQL 表:

item  |  order  |  start date  |  end date
------------------------------------------
  1        1       2015-09-15    2015-09-20
  2        1       2015-09-15    2015-09-20
  1        2       2015-09-20    2015-09-25
  2        2       2015-09-20    2015-09-25

我想要做的是执行一个查询,该查询将检查任何结束日期是否在未来开始日期的 7 天内,并返回结果。有谁知道如何做到这一点?

编辑:我想应该更具体 - 订单的开始日期和结束日期(在这种情况下,例如示例表中的订单 2)可以在 7 天内彼此。我想检查订单 1 的结束日期是否在订单 2 开始日期的 7 天内。抱歉,如果之前不清楚。

【问题讨论】:

    标签: mysql


    【解决方案1】:

    你可以使用datediff函数。

    select * from table_name
    where 
    start_date > curdate()
    and datediff(end_date,start_date) between 0 and 7
    

    【讨论】:

    • 在我的示例表中,order 2 不会返回正数吗?
    • 是的,您应该从给定示例中获取最后 2 行。
    • 但是,即使订单 1 的结束日期不在订单 2 的开始日期之内,因为订单 2 的开始日期和结束日期相隔 7 天内,这是否会给出肯定的结果?
    • 所以你的意思是应该对类似的订单进行检查,其中第二个订单的开始日期在订单 1 的结束日期的 7 天内?如果是这样,表中是否有一个主键来定义哪个是一阶或哪个是二阶?
    • 我的意思是说 - 我想检查订单 1 的结束日期是否在订单 2 的开始日期内 7 天,但我不想包括订单 2 的开始和结束日期是否在 7 天内彼此的。我只想查看订单 1 的结束日期是否在订单 2 开始日期的 7 天内。抱歉,如果之前不清楚。编辑:应该补充一点,这应该扩展到 100 个订单。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-03-15
    • 2012-10-17
    • 2012-09-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多