比较sql查询中的date()

时间:2015-08-25 17:03:57

标签: php mysql date datetime

我在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查询中做错了,尤其是比较日期部分,但我无法配置如何修复它?

请帮忙!

3 个答案:

答案 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)

要检查几件快速的事情,以确保它不是语法错误:

  1. 您的变量名称不匹配。您定义了startdateenddate,但在查询中您使用了startmonthendmonth
  2. 你可能也应该在你的月份和日期使用前导零,即:

    $month='08';
    $datefrom='01';