<select  name="is_time"  class="bin">  
                               <option  value="0">=日期查询=</option>  
                               <option  value="1">一天内</option>  
                               <option  value="2">三天内</option>  
                               <option  value="3">一个星期内</option>  
                               <option  value="4">一个月内</option>  
                               <option  value="5">三个月内</option>  
                               <option  value="6">三个月以上</option>  
                               <option  value="7">本日之前</option>  
                           </select>  
 
$is_time = isset($_REQUEST['is_time']) ? $_REQUEST['is_time'] : 0;
if($is_time!=0){ 
 switch  ($is_time){  
    case  1:  
         $search2="and  DATE_SUB(CURDATE(),INTERVAL  1  DAY)  =  active_time";      //这是查询一天内的  
         break;  
    case  2:  
         $search2="and  DATE_SUB(CURDATE(),INTERVAL  3  DAY)  <=  active_time";        //这是查询三天内的  
         break;  
    case  3:  
         $search2="and  DATE_SUB(CURDATE(),INTERVAL  7  DAY)  <=  active_time";        //这是查询一个星期内的  
         break;  
    case  4:  
         $search2="and  DATE_SUB(CURDATE(),INTERVAL  30  DAY)  <=  active_time";        //这是查询一个月内的  
         break;  
    case  5:  
         $search2="and  DATE_SUB(CURDATE(),INTERVAL  90  DAY)  <=  active_time";        //这是查询三个月内的  
         break;  
    case  6:  
         $search2="and  DATE_SUB(CURDATE(),INTERVAL  90  DAY)  >=  active_time";        //这是查询三个月以上的  
         break;  
    case  7:  
         $search2="and  DATE_SUB(CURDATE(),INTERVAL  1  DAY)  >=  active_time";        //这是查询本日之前的  
         break;  
    default:  
          $search2="";  
          break;  
   }  

解决方案 »

  1.   

    不会的,
    要不你改一下
        case  2:  
             $search2="and  TO_DAYS(NOW()-TO_DAYS(active_time) <= 3";        //这是查询三天内的  
             break;
      

  2.   

    主要是switch语句里面的判断条件
    我的目的
    比如今天是8-2日,当选择了“一天内的”后就显示今天的
    如果选择了“三天内的”就显示8-2日至8-5日内的记录!
      

  3.   

    既然你是要查询预置的内容,那么将
    $search2="and  DATE_SUB(CURDATE(),INTERVAL  3  DAY)  <=  active_time";        //这是查询三天内的  改作
    $search2="and  DATE_SUB(CURDATE(),INTERVAL  -3  DAY)  <=  active_time"

    $search2="and  DATE_ADD(CURDATE(),INTERVAL  3  DAY)  <=  active_time"
      

  4.   

    参考网站http://data.52668.com/2004home/fcc2php_new/shchmaidong/ts_zh_xx.php
      

  5.   

    expr BETWEEN min AND max
    如果expr对大于或等于min且expr是小于或等于max,BETWEEN返回1,否则它返回0。如果所有的参数类型是一样得,这等价于表达式(min <= expr AND expr <= max)。第一个参数(expr)决定比较如何被执行。如果expr是一个大小写不敏感的字符串表达式,进行一个大小写不敏感的字符串比较。如果expr是一个大小写敏感的字符串表达式,进行一个大小写敏感的字符串比较。如果expr是一个整数表达式,进行整数比较。否则,进行一个浮点(实数)比较。 active_time BETWEEN CURDATE() and DATE_ADD(CURDATE(),INTERVAL  3  DAY)你应该认真理解系统提供的函数并灵活应用
      

  6.   

    是你漏了一点
    应该是这样吧:
    $search2="and (active_time<= DATE_ADD(CURDATE(),INTERVAL  3  DAY)    
              and active_time>=CURDATE() )";     
      

  7.   

    还是xuzuning(唠叨) 抢先了一步,而且说的也更详细,学习呀~!