我的写法是这样的,但是运行时报错,应该怎样写呢?
SELECT *
FROM tbLeaveRec
WHERE AND (BeginData <= 2003 - 4 - 14) AND 
      (EndData>= 2003 - 4 - 14)

解决方案 »

  1.   

    你是CHAR类型的字段,怎么可以这样查呢,你为什么不设成DATE类型的字段呢,select * from table where begindate>='2002-4-14' and endDate<='2002-4-18'
    这样应该会没问题了
      

  2.   

    先将你的日期型变量转换为和表中相同格式的字符串,
    再连接sql。可以用formatdatetime(‘yyyy-mm-dd’,date)
      

  3.   

    注意要用字符串连接,在delphi中的写法
    select * from table where begindate>='‘’2002-4-14‘’ and endDate<=‘’2002-4-18'‘
      

  4.   

    加上引号,另外你的日期在保存时如果位数不足要补0,不然比较时会有问题SELECT *
    FROM tbLeaveRec
    WHERE AND (BeginData <= '2003-04-14') AND 
          (EndData >= '2003-04-14')
      

  5.   

    类型是char?
    SELECT *
    FROM tbLeaveRec
    WHERE AND (BeginData <= "2003 - 4 - 14") AND 
          (EndData>= "2003 - 4 - 14")
    1.可能的错误“EndData"?还是"EndDate"?
    2.字串嘛?要用“”的嘛!
    这样写还不一样能查询到数据。建议将BEGINDATE,ENDDATE改为DATE/DATETIME,具体看用什么数据库
    比如Oracle:
    SELECT *
    FROM tbLeaveRec
    WHERE AND (BeginDate <= To_Date("2003 - 4 - 14")) AND 
          (EndDate >= To_Date("2003 - 4 - 14"))
      

  6.   

    如果日期字段是字符型的,用(BeginDate<='2003-04-14') AND (EndDate>='2003-04-14')。
    如果日期字段是Date型的,用BeginDate<=To_Date('2000-04-14','YYYY-MM-DD'),即将字符串转化为日期型的就可以比较了。
      

  7.   

    我是用SQL SERVER,
    只有一个DATATIME类型的字段,包括了时间,很不好操作,
    所以我就想用CHAT型的来操作
      

  8.   

    就设成日期时间型。//重在强调真的很有好处。。我帮你搞定。
    SELECT *
    FROM tbLeaveRec
    WHERE AND (BeginData <=:pBdate ) AND 
          (EndData>=:pEdate)
     with aq.Parameters do begin
          paramByName('PBdate').value:=strtodate('2000-04-14'); 
          paramByName('PEdate').Value:=strtodate('2000-04-14'); 
     End;试试吧。
    如果有问题再找我。
    我一定帮你解决!