如何使用mysql检查日期是否在date1和date2之间?

时间:2012-01-18 02:56:39

标签: mysql date-range

我正在尝试编写一个查询,它将在myql / php中查看我的表列date1和date2的今天的日期。这就是我所追求的:

'events'表:

  • date1 =开始日期(XXXX-XX-XX)
  • date2 =结束日期(XXXX-XX-XX)

查询:

  • 从2012-01-18 date1和date2之间的事件中选择*(或等于date1和date2)

但我不知道如何去做..任何帮助都会受到赞赏:)

编辑:

也许我不清楚..如果今天的日期='2012-01-18'如果今天的日期在date1和date2的日期范围之间我需要它来查找结果..所以date1可能是'2012-01-04 '和date2可能是'2012-01-21'..所以,如果今天的日期在这些日期之间或之间,则返回结果..

6 个答案:

答案 0 :(得分:16)

SELECT * FROM events 
  WHERE date1<='2012-01-18'
  AND date2>='2012-01-18'

答案 1 :(得分:2)

如果你提到比较今天的日期是在开始和结束日期之间,我认为你应该使用这个:

SELECT *
FROM table
WHERE '2014-08-20' >= start_date
AND '2014-08-20' <= end_date

希望这会有所帮助:)

答案 2 :(得分:1)

SELECT *
FROM events
WHERE date1 <= '2012-01-18'
AND date2 >= '2012-01-18';

这应该让你开始。如果您不想对日期进行硬编码,则可以使用DATE(NOW())获取今天的日期。

答案 3 :(得分:1)

试试这个,

SELECT * FROM events  
  WHERE date1<='2012-01-19'  
  AND date2>='2012-01-18'  

答案 4 :(得分:0)

虽然这个问题有很多答案,但我想就我遇到的情况作出回应。

我使用php来查询mysql数据库。

我首先要做的是转换mysql支持的日期格式中的日期,即yyyy-mm-dd

$date = new DateTime($date);
$date=date_format($date, 'Y-m-d');

在我使用的查询条款 BETWEEN

"'$date' BETWEEN start_date AND end_date"

这完全符合此处描述的情况。

答案 5 :(得分:-2)

styfle代码的修改版本

$date1 = '2010-01-01'; // example min
$date2 = '2015-01-01'; // example max
$sql = "SELECT * FROM events WHERE $date1 >= '2012-01-18' AND $date2 <= '2012-01-18';";
$result = mysql_query($sql) or die(mysql_error());
if (mysql_num_rows($result) != 0) {
    // This date is equal to or within the range specified
} else {
    // The date was not within the range specified
}

然后您可以根据结果执行代码