SELECT DISTINCT b.title, b.litpic, c.filmtime, b.ID aid
FROM dede_addonsession a
INNER JOIN dede_archives b ON b.ID = a.filmID
INNER JOIN dede_addonmovie c
WHERE c.aid = a.filmID
AND screeningsdate = CURDATE( ) 
ORDER BY c.filmtime DESC 
LIMIT 0 , 4就是这条语句,数据库在windows平台下的时候,可以成功的读取出数据,
 但是最近数据库割接到linux平台下后,这条语句就读取不到数据了,为空。   但是其他的语句又运行正常, 请各位看看,谢谢了

解决方案 »

  1.   

    screeningsdate = CURDATE( ) 估计问题在这儿。
      

  2.   

    是不是表名大小写的关系啊。错误信息是什么
    把错误打出来就知道了啊
    echo mysql_error();
      

  3.   

    哦,不好意思,没看到语句运行正常这句话,
    如果语句运行正常,数据库结构也相同的话,
    我觉得第一可能是数据库版本不同,
    像一楼说的
    screeningsdate = CURDATE( ) ,
    这句话先去掉,如果有结果,就说明这里错了。
    你可以看下select CURDATE( );
    结果是什么,没准第二可能是数据库服务器设置的时间和web服务器时间有出入。即使这里没错,我也建议楼主改成screeningsdate =".date('Y-m-d',time())."这样
    我觉得mysql里还是能不用函数就不用。
    能算好的就都在外面算好了,不要无形去加重服务器的负担。
      

  4.   

    screeningsdate <= CURDATE( )如果我写成这样的话,能得到数据,但是不是我想要的数据~
      

  5.   

    linux系统下,要区分字符的大小写吧,我也不太懂,乱说的
      

  6.   

    数据库里比较时间大小的话,最好是用时间戳按数字大小比较,不要用时间类型去比较,
    我记得(我记得啊,呵呵,因为我都是按照时间戳比较的,我放数据库的时间都是时间戳,不会放2009-01-15 00:00:00这种的,所以以至于养成了习惯,现在也根本没研究过mysql的时间数据类型)
    好像是mysql4和更早的版本里的时间类型字段比较根本没有按时间真正大小比较,而是按字符比较的,如果这样的话就肯定有问题。window表名默认使不分大小写的,
    linux,表名默认是分大小写的,其他不清楚。
    不过楼主既然说正确运行没有报错,就不该是这里的问题。
      

  7.   

    漏说一句,是mysql数据库比较时间大小,mssql时间类型就完全没问题。
      

  8.   

    MySQL版本是否一样?CURDATE()Returns the current date as a value in 'YYYY-MM-DD' or YYYYMMDD format, depending on whether the function is used in a string or numeric context.mysql> SELECT CURDATE();
            -> '2008-06-13'
    mysql> SELECT CURDATE() + 0;
            -> 20080613
      

  9.   

    SELECT DATEDIFF('1997-11-30 23:59:59','1997-12-31');
    看5.1手册,
    这样处理时间应该可以.