select if(approveDate='0000-00-00 00:00:00','',approveDate) approveDates在window里运行能正确显示 ,到时linux服务器后 日期用if判断后 就出现 [B@1ff95a9 这样类似的字符 
如果不加判断 是能正常显示的 ,请问要如何处理 ?环境是 tomcat6 + struts2 + jstl + mysql5

解决方案 »

  1.   

    难道是linux下日期格式解析不问题?
    试试这个:
    select if (approveDate = str_to_date('0000-00-00 00:00:00', '%Y-%m-%d %H:%i:%s'), '', approveDate) approveDates
      

  2.   

    检查你的日期默认格式。mysql> show variables like 'datetime_format';
    +-----------------+-------------------+
    | Variable_name   | Value             |
    +-----------------+-------------------+
    | datetime_format | %Y-%m-%d %H:%i:%s |
    +-----------------+-------------------+
    1 row in set (0.00 sec)mysql>
      

  3.   

    你select出来时间字段看看是什么格式的
      

  4.   

    mysql> show variables like 'datetime_format';在window下和linux的格式都是 %Y-%m-%d %H:%i:%s 
      

  5.   

    谢谢 iihero 的启发建议 select date_format(if (approveDate = '0000-00-00 00:00:00', '', approveDate), '%Y-%m-%d %H:%i:%s') approveDates  要date_format一下才行  
      

  6.   

    这样处理后 
    如果日期为  0000-00-00 00:00:00 输出的值不为 '' , 是输出 null值 
    再加判断的话就变为 select ifnull(date_format(if (approveDate = '0000-00-00 00:00:00', '', approveDate), '%Y-%m-%d %H:%i:%s'),'') approveDates  貌似异常的复杂 ,有简单一些的方法吗?