我在mysql数据库中有5条记录,这些记录在此日期间隔内记录了日期。
$year=2015;
$month=8;
$datefrom=1;
$dateto=31;
$startdate='$year-$month-$datefrom 00:00:00';
$enddate='$year-$month-$dateto 23:59:59';
所以我写了一个查询来获取这些记录:
$sql = "SELECT id FROM newpost WHERE email=:email AND :startdate <= poststart <= :enddate AND postapproved=1";
鉴于表newpost中的poststart
列具有如下的SQL日期时间格式:&#34; Y-m-d H:i:s&#34;。
但是当我改变$ year = 2016时,我仍然得到5个结果?它应该没有记录。因为这5条记录是在2015年8月1日至31日之间记录的。
所以我认为我在sql查询中做错了,尤其是比较日期部分,但我无法配置如何修复它?
请帮忙!
答案 0 :(得分:0)
您可以在查询中使用BETWEEN
$sql = "SELECT id FROM newpost WHERE email=:email AND (poststart BETWEEN :startmonth AND :endmonth) postapproved=1"
答案 1 :(得分:0)
使用单引号包装日期值
$sql = "SELECT id FROM newpost WHERE email=:email AND poststart BETWEEN ':startdate' AND ':enddate' AND postapproved=1";
答案 2 :(得分:0)
要检查几件快速的事情,以确保它不是语法错误:
startdate
和enddate
,但在查询中您使用了startmonth
和endmonth
。你可能也应该在你的月份和日期使用前导零,即:
$month='08';
$datefrom='01';