您好,我正在尝试执行此查询
$sql = "SELECT * FROM il_receipt WHERE recepit_date >='$search_date1' AND recepit_date <='$search_date2'" ;
但它没有给出正确答案。 EX。当我在2015年12月1日和2015年12月2日提供投入时,其给出的结果包括11月的两个日期之间的结果。它应该只提供12月的日期。请帮我解决这个问题,期待回复。
答案 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
那应该返回你想要的结果:)