有一SQL语句的时间字段查询如下: with f_tjhz.data_sql do
    begin
     close();
      sql.text:='SELECT * FROM sqfy where convert(char(10),wcdate,023)='
                 +QuotedStr(datetostr(DateTimePicker1.Date));
    end;数据库里的wcdate字段有些是带有时间的(如2008-06-11 17:17:52.000),有些手工输入是不带时间的(如2008-05-28)
现在问题是,当程序运行时,在DateTimePicker1选只有日期,用了convert(char(10),wcdate,023)截掉时间部分,但怎么都查询不到数据,比如库里有很多是等于这个时间(2008-06-11 17:17:52.000)的记录,在DateTimePicker1选2008-06-11就是查不到记录,而用2008-5-28又可以查出来,难道转换convert(char(10),wcdate,023)有问题吗??请高手指点!!

解决方案 »

  1.   

    我一般就写 sSql := ' select * from sqfy where wcdate >= '+#39+formatDateTime('yyyy-MM-dd,now)+' 00:00:00'+#39
    +' and wcdate <='+#39+formatDateTime('yyyy-MM-dd,now)+' 23:59:59+#39;
      

  2.   


    //试试这样写
    select * from t where dt=convert(varchar(10),dt,023)
      

  3.   

    sql.text:='SELECT * FROM sqfy where convert(varchar(10),wcdate,120)=' 
    +QuotedStr(FormatDateTime('yyyy-mm-dd', DateTimePicker1.Date));