try TO_DAYSSELECT * FROM Log WHERE TO_DAYS(CreateTime) = TO_DAYS('20040319');

解决方案 »

  1.   

    呵呵,这个问题没有注意过.timestamp 类型在内部是以 14 位的整数形式保存. 精度为 秒
    用楼上的 TO_DAYS() 是一个好的解决办法 
    不过没有办法使用  TIMESTAMP 列上的索引了.建议使用 
    SELECT * FROM Log WHERE CreateTime BETWEEN  CAST('2004-03-09' AS DATETIME) AND CAST('2004-03-10' AS DATETIME) ;
      

  2.   

    :) 
    loveflea(coolwind)
    快要升 猩猩 了哈..
      

  3.   

    犬犬说的办法很不错,不过只能在4.1以上版本上用,如在4.1以下,参照他的办法可把列属性直接改成datetime即可。
      

  4.   

    上面我所说的经过验证,已经不需了。
    你直接用一个大于与小于(不要用between,经验证,不行)即可。
    如createtime>'2004-1-1' and createtime<'2004-1-2'将查出2004-1-1日的资料来!
      

  5.   

    :)
    呵呵,
    是的.
    BETWEEN 在内部 SQL 解析优化时,就是解析为 Col > ... AND Col < ... 的
      

  6.   

    SELECT CAST('20040316092605' AS DATETIME);好像有问题哦。
    总之用timestampe会出现预想不到的问题。还是用datetime好。我也懒得试验了,一会行,一会又不行。要崩溃了。
    本以为timestamp用起还会方便些。没想到这么麻烦。
    等待mysql.com解决ing.