选择开始日期内的行

时间:2011-03-08 10:54:11

标签: php mysql date

我正在编写一个PHP应用程序,显示特定时间范围内的促销活动。

在应用程序中,您可以设置开始日期和结束日期。在某些时候可能会出现没有促销活动的时间。

在我的数据库中,我正在存储

date_from (MySQL DATE - eg 2011-03-05) //start date

date_to (MySQL DATE - eg 2011-03-08) //end date

用户可以设置多个促销,自动切换到下一个日期。

根据上述示例日期,优惠将在5日,6日和7日显示。

我想我需要的东西是

SELECT * FROM promotions WHERE date_from > $current_date

但我如何确保它不会在8日显示,然后(如果有促销从8日开始)显示新的。

修改

Krtek建议的这个SQL似乎不起作用:

SELECT * FROM promotions WHERE 2011-03-08 BETWEEN date_from AND date_to LIMIT 1 

该行包含以下数据date_from ='2011-03-01'和date_to ='2011-03-09'但尚未返回任何内容

由于

5 个答案:

答案 0 :(得分:4)

尝试这样的事情:

SELECT * FROM promotions WHERE '$current_date' BETWEEN date_from AND date_to

编辑:在日期周围添加引号,它应该更好地工作。

答案 1 :(得分:0)

SELECT * FROM promotions WHERE date_from > $current_date and date_to < $current_date ;

如果您想去基于日期的日期,查询将变为:

SELECT * FROM promotions WHERE DATE(date_from) > $current_date and DATE(date_to) < $current_date ;

答案 2 :(得分:0)

SELECT * FROM promotions WHERE date_from <= $current_date and date_to >= $current_date

因为人们通常希望它在指定的日期开始并结束并包括指定的日期。

但是krtek的答案更好。

答案 3 :(得分:0)

你在找这样的东西吗?

SELECT * FROM `promotions` WHERE date_from between $date_from and $date_to

http://www.plus2net.com/sql_tutorial/between-date.php

答案 4 :(得分:0)

请不要在构建SQL查询时使用字符串插值。你后悔。

$stmt = mysqli_prepare($link, "SELECT * FROM promotions WHERE ? BETWEEN date_from AND date_to");
mysqli_stmt_bind_param($stmt, 's', $current_date);
mysqli_stmt_execute($stmt);