由于我的数据库使用了文本型作为日期字段,而且它的年月日间隔用"."来实现,如2004-6-10它写成了2004.6.10,这样子如果在SQL用CDate将会出现格式不符合的错误,请问我如何才能够取得2003-10-10到2004-1-7之间的记录呢?

解决方案 »

  1.   


        先用replace(字段名,'.','/')转换一下。
      

  2.   

    同意楼上先用replace函数转换为正常的日期格式再用CDate函数.
      

  3.   

    先用replace(字段名,'.','/')转换一下
      

  4.   

    我试过用replace,它说函数未定义
      

  5.   

    同意先用replace函数转换为正常的日期格式再用CDate函数.
      

  6.   

    我试过用replace,它说函数未定义
    //
    不会吧?
      

  7.   

    select * from origianl where timestamp>convert(datetime,"2003.10.10") and timestamp<convert(datetime,"2004.1.7");
      

  8.   

    大家要注意,我打开的是Access数据库,它的确是说replace函数未定义,至于convert函数,不太会用,能详细说一说吗?
      

  9.   

    可恶,我试过了,用convert函数仍然不行,也是说replace函数未定义,请问是什么原因?我用的是access数据库
      

  10.   

    可恶,我试过了,用convert函数仍然不行,也是说replace函数未定义,请问是什么原因?我用的是access数据库
    ========================
    当然,我上面的查询语句是sql server里面的,sql server的convert函数与access中的不一样。
    在access中,我用下面的查询语句能正常工作:SELECT * FROM t1 WHERE cdate(replace(timestamp,".","/"))>=#10/10/2003# And cdate(replace(timestamp,".","/"))<=#1/7/2004#;t1是测试的表,里面只有一个文本字段timestamp,里面都是些2004.6.10格式的日期文本。。楼主的查询不成功,我估计是因为由于某些原因,有些记录的timestamp字段可能是一些非法的日期文本,例如,timestamp=2004.1.6的时候,上面的语句可以正常工作,但如果由于某些原因,使timestamp=2004.18.56,那么上面的语句就会出错,因为一年不会有18个月。。同样,也不会有56天。。
    至于说replace函数未定义,请检查你的office是否安装得完整。。
      

  11.   

    我还是不行啊,还是说replace函数未定义,我装的是office2000,我是完全安装的,你是什么版本的?
      

  12.   

    office2000。。replace可能不是access的内置函数而是VBA里的函数,不知你有没有安装vba??????replace在word、excel里面也不能用??????
      

  13.   

    VBA里面的函数吗?但我是用VB调用Access的,能用吗?