declDate: string;declDate := FormatDateTime('yyyy-mm-dd',DateTimePicker1.Date);表 T_DECL_BASEdeclno DECL_DATE
1          2005-10-28 14:22:20
2          2005-10-28
3          2005-01-01 14:22:20
4          2005-1-1 14:22:20 
5          2005-1-1
6          2005-1-1 下午 14:22:20
7          2005-10-28 上午 14:22:20
1、我这里有 表T_DECL_BASE , 其中字段 DECL_DATE 值类型为 VARCHAR(23) 
2、我需要通过 传进去时间的值 declDate 来查询 整个表 
  如 select * from T_DECL_BASE a 
      where to_char(to_date(a.DECL_DATE,'yyyy-MM-dd hh24:mi:ss'),'yyyy-MM-dd') ='+ declDate +' 
3、由于 表里 时间 数据格式不统一 ,只能查询 部分数据出来,大家看下能有什么语句进行查询吗?  (象 我之上的语句 就无法查询出 带中文字的 的时间来,大家看如何写这个语句可以查询)       

解决方案 »

  1.   

    直接把你的DECL_DATE当做字符串查询吧
    var sqlstr: string;
    begin
    sqlstr:='select * from T_DECL_BASE a
          where a.DECL_DATE='+ quotedStr(declDate);
    ...
      

  2.   

    select * from T_DECL_BASE a 
          where to_char(to_date(a.DECL_DATE,'yyyy-MM-dd hh24:mi:ss'),'yyyy-MM-dd') ='+ declDate +' 
    我使用这个语句 在PL/SQL 查询时 报 '在要求输入字符处找到非数字字符' 怎么解决呀??
      

  3.   

    declDate 现在有这几种格式 非常乱 
              2005-10-28 14:22:20 
              2005-10-28 
              2005-01-01 14:22:20          
              2005-1-1 14:22:20 
              2005-1-1 
              2005-1-1 下午 14:22:20 
              2005-10-28 上午 14:22:20 Delphi(Pascal) code
    sql: TStrings;
    declDate :string;sql.Append('insert into T_DECL_BASE (DECL_NO,DECL_DATE)');
    sql.Append(' values (:P1,:P2)');  if not adoConn.Connected then adoConn.Open();
      adoConn.BeginTrans();
      adoQuery.SQL.Clear();
      adoQuery.SQL.AddStrings(sql);
      adoQuery.Parameters.ParamByName('P1').Value:= declNo;
      adoQuery.Parameters.ParamByName('P2').Value:= declDate;
    请问 我需要 : 
    1、因为declDate的字段非常乱 把declDate 按 'yyyy-MM-dd hh24:mi:ss' 的规定格式 插入数据库 请问 如何写 adoQuery.Parameters.ParamByName('P2').Value:= declDate 这条语句?