如何在两个日期之间查找数据

时间:2015-12-11 10:50:46

标签: php sql

您好,我正在尝试执行此查询

$sql = "SELECT * FROM  il_receipt WHERE recepit_date >='$search_date1' AND recepit_date <='$search_date2'" ;

但它没有给出正确答案。 EX。当我在2015年12月1日和2015年12月2日提供投入时,其给出的结果包括11月的两个日期之间的结果。它应该只提供12月的日期。请帮我解决这个问题,期待回复。

4 个答案:

答案 0 :(得分:0)

您可以使用BETWEEN语句:

$sql = "SELECT * FROM il_receipt WHERE recepit_date BETWEEN '$search_date1' AND '$search_date2'";

答案 1 :(得分:0)

您的日期格式应为YYYY-MM-DD

"SELECT * FROM  il_receipt WHERE recepit_date between '$search_date1' AND '$search_date2'" ;

答案 2 :(得分:0)

考虑到您的日期存储在数据库中的Y-M-D,请使用此

$search_date1 = date("Y-m-d",$search_date1);
$search_date2 = date("Y-m-d",$search_date2);
SELECT * FROM  il_receipt WHERE DATE(recepit_date) BETWEEN '$search_date1' AND '$search_date2';

答案 3 :(得分:0)

问题可能与格式化有关。我不知道你使用的是什么日期格式,所以我猜不出正确的格式,但是你应该查看你的数据库模型,看看日期是如何表示的。

您的语法似乎没有任何问题。确保数据库中有条目将返回清晰的结果,并确保格式正确。除此之外,它确实应该有效。

你可以像其他人所提到的那样使用Between,但你做的方式应该同样适用。

编辑:鉴于您使用VARCHAR数据类型来存储日期,您可能难以使用数学运算符,并且可能必须对您如何查询数据库有点聪明。尝试使用以下where子句:

    WHERE receiptdate LIKE '%/12/%';

LIKE关键字在查询中查找文本模式。在所需模式之前和之后使用%来告诉查询所需的模式出现在任一侧(您的日期和年份),并使用字符串/ 12 /来消除当天出现的任何12(很可能)或年(不太可能,但你永远不知道)部分。从技术上来说,你在十二月的所有日期应该像这样表示:

XX / 12 / XXXX

那应该返回你想要的结果:)