你的SQL语句和出错信息好像不匹配么?
试试这样:
select * from message where DATE_FORMAT(message_time, %Y) = 2005
或者
select * from message where YEAR(message_time) = 2005

解决方案 »

  1.   

    后面的%Y需要加引号的:
    select * from message where DATE_FORMAT(message_time,'%Y') = '2005';
    也可以这样:
    select * from message where year(message_time) = '2005';
      

  2.   

    这样可能还会速度快一点:
    mysql> select * from message where left(message_time,4) = '2005';
      

  3.   

    呵呵...以 trampwind(随风) 为准.
      

  4.   

    select YEAR(message_time) from message where 条件你自己写!!
      

  5.   

    select * from message where DATE_FORMAT(message_time,'%Y') = '2005'
    加‘’就行了
      

  6.   

    借个地方顺便问问啊,windyzj (风晨)不介意吧?呵呵
    那如果是用时间戳来记录时间,字段类型是int的话,又是怎么做啊?
      

  7.   

    mysql> SELECT FROM_UNIXTIME(875996580);
            -> '1997-10-04 22:23:00'
    mysql> SELECT FROM_UNIXTIME(875996580) + 0;
            -> 19971004222300
      

  8.   

    select * from message where DATE_FORMAT(message_time,'%Y') = '2005';
      

  9.   

    挺好的,只是有些东西大家并没有吃透Mysql手册,继续学习
      

  10.   

    后面的%Y需要加引号的:
    select * from message where DATE_FORMAT(message_time,'%Y') = '2005';
    也可以这样:
    select * from message where year(message_time) = '2005';
      

  11.   

    还有一种办法!
    很简单:
    select * from message where substring(message_time,1,4)='2005'
    这个绝对可以.
    搞定!@