时间类型是:1304524800 这种$news_num2=$db->result_first("select count(*) from mayi_news where DATE_FORMAT(news_time,'%Y-%m')='".date('Y-m',time())."'");这样子结果总是为0,事实六月份是有数据的。

解决方案 »

  1.   

    $news_num2 = $db->result_first('SELECT COUNT(*) FROM `mayi_news` WHERE `news_time` >= '.mktime(0,0,0,date('m',time()),1,date('Y',time())).' AND `news_time` <= '.mktime(23,59,59,date('m',time()),date('t'),date('Y',time())).';');大概就是这样子...不一定有效率,提供一个思路吧。
    哈哈,你也来发问啊
      

  2.   


    效率确实不好啊。求高手给个简洁的。
    刚学php不久的。。有空来这里混混。。
      

  3.   

    code=SQL]
    select * from mayi_news where DATE_FORMAT(DATE,'%Y-%m')='date("Y-m")';[
    [/code]
      

  4.   

    "SELECT COUNT(*) FROM `mayi_news` WHERE `news_time` >= ".strtotime(date('Y-m').'-01')." AND `news_time` <= ".strtotime(date('Y-m').'-01 23:59:59')
      

  5.   

    DATE_FORMAT(news_time,'%Y-%m')
    要求 news_time 为 datetime 类型
    而你的 news_time 是 int 类型应写作
    FROM_UNIXTIME(news_time,'%Y-%m')
      

  6.   

    因为你数据库保存的是时间戳,最好在php计算好这个月初的开始时间戳和结束时间戳。然后mysql  between 就可以了
      

  7.   


    神奇了,昨天我明明这样写,结果显示记录是0今天再用 FROM_UNIXTIME 又可以了,难道我在梦游??给我两巴掌吧。。
      

  8.   

    我觉得不要在数据库操作语句过于下功夫,你可以在页面创建一个日期查询,比如X月-X月,然后在PHP里把拿到的2个值转化成时间戳,再把这2个时间戳放到SQL语句里,用BETWEEN AND这样就爽了,毕竟3~4行的SQL语句谁看了都要抓狂,还不如放在PHP文件里,一行一行的,思路清晰,目的明确。