Mysql5.5手册里是这么说的:
那么问题来了,之前经常这么写sql,例如:select * from table where createtime >= '2014-12-01 12:00:00' and createtime <= '2014-12-01 12:59:59';其中createtime字段是datetime类型的,这么写sql不会报错,但网上说有可能查的不准,真是这样吗,为什么?

解决方案 »

  1.   


    不过mysql手册上好像也没说比较操作符后面可以跟日期字符串啊。另外,这么写:select * from table where createtime >= '2014-12-01 12:00:00' and createtime <= '2014-12-01 12:59:59';
    和这么写:
    select * from table where createtime >= STR_TO_DATE('2014-12-01 12:00:00','%Y-%m-%d %H:%i:%s') and createtime <= STR_TO_DATE('2014-12-01 12:59:59','%Y-%m-%d %H:%i:%s');有啥却别?要是没区别的话为什么还要有STR_TO_DATE这个函数,还有诸如用UNIX_TIMESTAMP函数转换日期字段/字符串的方式写sql,怎么觉着有点乱呢。
      

  2.   

    '12/01/2014'  请问是几月?
    同理,'2014-12-01'又是几月? MYSQL是凭什么知道的呢?而STR_TO_DATE('2014-12-01 12:59:59','%Y-%m-%d %H:%i:%s'); 则非常明确。
    如果仍有其它问题,建议重新开贴在楼顶描述清楚,毕竟很多人不会去花时间看下面的其它问题的。