繁体   English   中英

选择开始日期内的行

[英]Select row that is within start 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'但未返回任何内容

谢谢

尝试这样的事情:

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

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

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 ;
SELECT * FROM promotions WHERE date_from <= $current_date and date_to >= $current_date

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

但是krtek的答案更好。

你在找这样的东西吗?

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

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

请不要在构建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);

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM