【问题标题】:MySQL Select rows where specified date is between start date and end dateMySQL选择指定日期在开始日期和结束日期之间的行
【发布时间】:2014-06-25 14:35:34
【问题描述】:

我的表格有一列 (datetime) 表示开始日期和时间,“startdate”,还有一列 (datetime) 表示结束日期和时间,“endtime”。

我想从表中选择 startdate 和 enddate 包含指定日期的行。

示例:我有一行开始日期为 2014-06-22 20:00:00,结束日期为 2014-06-29 23:00:00,我想选择具有指定日期范围的行对于给定的一天(2014-06-25)。

这是我的查询,目前没有按照我的意愿执行...

SELECT * FROM my_tbl WHERE `startdate` >= '2014-06-22 00:00:00' AND `enddate` <= '2014-06-22 23:59:59'

我也尝试过 SQL 查询中的 Between。我想我将不得不创建一个包含 startdate 和 enddate 的日期范围,并从指定的日期开始引用它,但我不知道该怎么做。请帮忙!

编辑:

我的表有 2 个日期列。我正在注射特定的一天(2014-06-25)。我想返回在指定日期之前或之后具有开始日期 (startdate) 并且在指定日期之后或之后具有结束日期 (enddate) 的行。所以基本上我希望根据指定的日期显示活动行。

【问题讨论】:

  • 我们又回来了;),这可能会有所帮助stackoverflow.com/a/4794081/1596244
  • 您的 startdate 和 enddate 列的格式是什么?
  • 您当前的查询是如何不起作用的?
  • 上面的查询应该可以工作。
  • 不应该是 startdate = 如果您指定的日期介于两者之间。您目前正在寻找在指定日期之后开始并在指定日期之前结束的行,这可能是不可能的

标签: mysql sql datetime


【解决方案1】:

使用带有日期部分的DATEDIFF 函数。

SELECT * FROM my_table WHERE DATEDIFF(day, date1, date2) >= 0

Source

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-05-31
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多