ms sql里面是可以的 my sql没试过

解决方案 »

  1.   

    试试在其它环境中使用ODBC for mysql执行这个句子,看看有什么结果。
      

  2.   

    MYSQL没用过,不过好像不应该得到这样的结果呀,说实在的,ADO.NET是有一些BUG.
      

  3.   

    你的这个情况确实存在,我也遇到过。这是ODBC4MySQL的一个己公布的Bug.强烈建议你不要在dot net上连接mysql数据库
      

  4.   

    谢谢大家,有个矛盾是,当我把where f1='0'改成where f1<>'0'时执行的结果和PHP执行结果完成一样,放在mysql里也是一样的。我的mysql是 4.0 alpha,我试试升一下级看。欢迎大家继续讨论
      

  5.   

    我在本地装MySQL 试没有发现同样的问题,本地的是 4.0.13。
      

  6.   

    >>>month(f3)=12you mean month(f2)=12?what records did you get back if you run the query in mysql?
      

  7.   

    思归,f3是一个日期型的字段,我是查询月份在 12 月份的记录,SQL语句本身在phpmyadmin里可以正确执行。
      

  8.   

    why phpmyadmin? not mysql's own command-line query tool?
      

  9.   

    因为太长了,命令行的方式不好粘贴语句。我的mysql,我想用phpmyadmin 应该没有什么区别的,退一万步说,我用PHP自己写语句也是行的啊,但是结果一样。工具不是问题关键。现在mysql已经升级到 4.0.16了,可问题依旧。
      

  10.   

    sounds very weird, shouldn't be caused by ODBC, here are some suggestions, try to build your sql one step at a time to see if they make any differences1. 
    select * from table1 where f1='0'2.
    select * from table1 where f1='0' and year(f2)=2003 3. 
    select * from table1 where f1='0' and year(f2)=2003 and month(f3)=12 4.
    ....
      

  11.   

    在远程上执行好象是date_add(f2,INTERVAL 72 Hour)<='2003-12-08 16:49:16' 没有被正确执行,如果正确执行的话,最后的f2日期应该是 12-4号,而这条语句执行出来,最后的f2为12月8号,这里有个问题,同样的程序在本地执行的结果却是正确的。
      

  12.   

    忽略了一个问题,好象本地执行也不对,明天再来看,不过有一点是肯定的就是PHP和C#执行相同的语句的结果却不一样。
      

  13.   

    不讨论本地了,就都在远程执行,PHP执行结果(排序)最后日期是2003-12-05 22:04:21,而C#执行结果日期包括了 12-8 的,这是不应该发生的,应为date_add(f2,INTERVAL 72 Hour)<='2003-12-08 16:49:16'在mysql里屏蔽掉了与当前时间相差不到 72小时的记录,但是好象在C#里并没有顺利执行。不知有没有其它的替代语句可以查证一下。
    明天再讨论吧,我得回家了,呵呵,有心的帮我UP好么?一起找BUG