簡體   English   中英

日期比較查詢php sql

[英]Date comparison query php sql

我正在努力比較2個查詢中的SQL查詢中的日期-我已經在strtotime / date / unixtime等中四處查看,但是不能完全解決。

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

Enddate是“日期”類型的sql字符串-格式為0000-00-00 (有時帶有日期,其他時候為null

  1. 我只想檢索當前日期早於結束日期的那些日期,但是我擁有的sql查詢返回了所有這些日期。
  2. 我知道它的速度較慢,但​​是我嘗試在代碼中實現它-這確實有效...但是我發現了另一個問題。 我想說的是'enddate'是在當前日期之后還是enddate為null(0000-00-00),然后打印...。等等-但是我無法使null起作用。

這是代碼:

///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/>';  
    }
  }
}

您必須引用字符串:

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

不清楚最終目標是什么,但是已經調整了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
");

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM