日期比较查询php sql

时间:2013-12-29 02:08:34

标签: php mysql sql date

我很难在sql查询中比较2个计数的日期 - 我在strtotime /日期/从unixtime等处查看过,但是不能完全解决它。

$currentday是日期字符串,格式为2013-12-29

Enddate是一个'日期'类型的sql字符串 - 格式为0000-00-00(有时带有日期和其他时间null

  1. 我只想检索当前日期在结束日期之前的那些日期 - 但我所拥有的sql查询将返回所有这些日期。
  2. 我知道它速度较慢,但​​我试图在代码中实现它 - 这很有用......但是我发现了另一个问题。我希望能够说'enddate'是否在当前日期之后或者enddate是null(0000-00-00)然后打印..等等 - 但是我无法使null工作。
  3. 以下是代码:

    ///Find all regular payments ordered by amount descending
    $check = mysql_query("
    SELECT * 
    FROM 
     regular 
    WHERE
     enddate >= ".$currentday." AND
     userid = ".$varuserid."
     ORDER BY amount desc
    ");
    
    if($check === FALSE) {
         die(mysql_error()); // TODO: better error handling
    } else {
    
      $regcheck = array(); //Assign details of valid regular payments for the user to an array 
      while($val=mysql_fetch_array($check)) {
    
        //SHOULD BE LIMITED BY SQL QUERY - Don't understand why it isnt??
        if (($val['enddate'] > $currentday) || (!$val['enddate'])) {
          print $val['enddate'].'?'.$currentday.'<br/>';
          //ERROR - NOT SURE WHY THIS SHOWS UP FROM THE SQL QUERY?
        } else {
          print 'err'.$val['enddate'].'?'.$currentday.'<br/>';  
        }
      }
    }
    

2 个答案:

答案 0 :(得分:1)

你必须引用字符串:

WHERE enddate >= '".$currentday."' AND ...

答案 1 :(得分:0)

不清楚最终目标是什么,但调整了MySQL以适应0000-00-00NULL日期。

$check = mysql_query("
SELECT * 
FROM 
  regular 
WHERE
  (enddate >= '" . $currentday . "' AND
  enddate IS NOT NULL AND
  enddate != '0000-00-00') AND
  userid = ".$varuserid."
  ORDER BY amount desc
");