time  //表
id title  time
1   a      2009-3-1 11:07:31
2   b      2009-3-2 11:07:31
3   c      2009-2-28 11:07:31
4   d      2009-3-3 11:07:31
5   e      2009-3-4 11:07:31我查询放到数组中
select * from time怎么样写
才能打印
今天的数值
昨日之前的数值
那明天以后的数值
如果今天是2009-3-1
打印
今天-------------------
1   a      2009-3-1 11:07:31
明天以后-----------------
2   b      2009-3-2 11:07:31
4   d      2009-3-3 11:07:31
5   e      2009-3-4 11:07:31
昨天之前----------------------
3   c      2009-2-28 11:07:31我想做成这样效果查看
怎么样做
谢谢

解决方案 »

  1.   

    你全部查询出来,用php做不很简单吗,为什么这样的需求也用sql去做呢?
      

  2.   

    foreach一下结果数组,利用strtotime函数.
      

  3.   

    你select 的时候order by time, 然后放到数组中为
    $result[$date]["title"]=...
    就是把按照日期把结果排序
    然后显示就拿当前日期和$date比较,放在昨天以前 今天 明天以后的里边就可以
      

  4.   

    最简单的方式用union连接三条sql语句.
      

  5.   

    不需要union,直接分3次查询
    1. = today
    2. > today
    3. < today
      

  6.   

    一次查询
    select * from time by time desc
    然后3次判断结果
    =今天
    大于今天
    小于今天
      

  7.   


    不是非常复杂的,可以用SQL尽量用它,在PHP性能差很多。三次查询。支持7楼的。
      

  8.   

    <?
    $b=array(1=>array('id'=>1,'title'=>'a','time'=>'2009-3-1 11:07:31'),2=>array('id'=>2,'title'=>'b','time'=>'2009-3-2 11:07:31'),
    3=>array('id'=>3,'title'=>'c','time'=>'2009-2-28 11:07:31'),4=>array('id'=>4,'title'=>'d','time'=>'2009-3-3 11:07:31'));
    $a='2009-3-2';//如果今天是2009-3-2
    $aa='2009-3-3';
    $a=strtotime($a);
    $aa=strtotime($aa);
    echo '今天-------------------';
    echo '<br>';
    foreach ($b as $key=>$value){
    if(strtotime($value['time'])<$aa&&strtotime($value['time'])>$a){
    echo $value['time'];
    echo '<br>';
    }
    }echo '明天以后-------------------';
    echo '<br>';
    foreach ($b as $key=>$value){
    if(strtotime($value['time'])>$aa){
    echo $value['time'];
    echo '<br>';
    }
    }echo '昨天之前-------------------';
    echo '<br>';
    foreach ($b as $key=>$value){
    if(strtotime($value['time'])<$a){
    echo $value['time'];
    echo '<br>';
    }
    }
    ?>你用下这个 测试了 可以用
      

  9.   

    select * from time by time desc 然后三个if或按楼上的写,没问题
      

  10.   

    <?php
    $sql=mysql_query("select * from time");
    $row=mysql_fetch_array($sql);
    $dated=date("Y-m-d");
    $i=0;
    $j=0;
    $h=0;
    foreach ($row as $key=>$value){ 
    if(DateDiff($value['time'],$dated)==0){ 
    $a[$i]=array('id'=>$value['id'],'title'=>$value['title'],'time'=>$value['time']);
    $i+=1;

    if(DateDiff($value['time'],$dated)<0){ 
    $c[$j]=array('id'=>$value['id'],'title'=>$value['title'],'time'=>$value['time']);
    $j+=1;
    }
    if(DateDiff($value['time'],$dated)>0){ 
    $d[$h]=array('id'=>$value['id'],'title'=>$value['title'],'time'=>$value['time']); 
    $h+=1;

    }
    if(is_array($a)){ 
    echo '今天-------------------'; 
    echo ' <br>'; 
    foreach ($a as $key=>$value){
    echo $value['id']."  ".$value['title']."  ".$value['time']; 
    echo ' <br>'; 

    }
    if(is_array($c)){
    echo '明天-------------------'; 
    echo ' <br>'; 
    foreach ($c as $key=>$value){
    echo $value['id']."  ".$value['title']."  ".$value['time']; 
    echo ' <br>'; 
    }  
    }
    if(is_array($d)){
    echo '昨天-------------------'; 
    echo ' <br>'; 
    foreach ($d as $key=>$value){
    echo $value['id']."  ".$value['title']."  ".$value['time']; 
    echo ' <br>'; 


    function DateDiff($d1,$d2)
    {  
        //日期比较函数
         if(is_string($d1))$d1=strtotime($d1);
         if(is_string($d2))$d2=strtotime($d2);
         return ($d2-$d1)/43200; //这里返回的是天数,如果除以3600就是返回小时了,依此类推
     }
    ?>
      

  11.   

    呵呵,恰恰相反,能少消耗mysql就应该少消耗,如lz问题,sql进行判断大小则必须用sql内置的时间函数,且时间字段为datetime型应该没设置索引,做多次查询显然很不划算.
    我的意见还是尽量用程序解决,除非数据量大,且设置索引,一般不建议为某一同样需求做3次或多次查询.
      

  12.   

    select * from time order by TO_DAYS(time)=TO_DAYS('2009-3-1'), TO_DAYS(time)<TO_DAYS('2009-3-1'), TO_DAYS(time)>TO_DAYS('2009-3-1')
      

  13.   

    今天
    select * from time where to_days(time)=to_days(now())
    明天
    select * from time where to_days(time)=(to_days(now())+1)
    其它类似,