不知道你要做什么?那我就乱来吧select * from tablename where field_datetime is nullformatdatetime()/

解决方案 »

  1.   

    SQL查询中,日期格式为"mm/dd/yyyy"
      

  2.   

    如这样一条语句:
    VAR
     A1:STRING
    BEGIN
      IF EDIT1.TEXT='' THEN A1:='' ELSE A1:='DATETIME ='''+EDIT1.TEXT+'''';  
      A1:='SELECT * FROM YGJD WHERE '+A1; 
      ADOQUERY1.CLOSE; 
      ADOQUERY1.SQL.CLEAR;
      ADOQUERY1.SQL.ADD(A1);
      ADOQUERY1.OPEN;
    END;
    产生异常为:SYNTAX ERROR CONVERTING DATETIME FROM CHARACTER STRING 语法错误的转换,
    这应如可解决呢.
      

  3.   

    SELECT * FROM YGJD WHERE (DATETIME AS VARCHAR(10)) = EDIT1.Text(指日期字符串)
      

  4.   

    VAR
    A1:STRING
    BEGIN
      IF EDIT1.TEXT='' THEN A1:='' ELSE A1:='DATETIME ='+EDIT1.TEXT;  
      A1:='SELECT * FROM YGJD WHERE '+A1; 
      ADOQUERY1.CLOSE; 
      ADOQUERY1.SQL.CLEAR;
      ADOQUERY1.SQL.ADD(A1);
      ADOQUERY1.OPEN;
    END;试一试
      

  5.   

    你输入edit.text的格式和数据库的不一致,好好想想吧
      

  6.   

    数据库字段的格式为:DATETIME类型长度为8,那应怎么写呢
      

  7.   

    1、如你所说如果Edit1.TEXT为空串时,A1也为空串。这样的话,SQL语句就成了:
    'SELECT * FROM YGJD WHERE ', 这样的语句肯定是不行的。我猜想你的意思是EDIT1.TEXT=''时就查询全部的数据,那应该这样写:
    A1:='SELECT * FROM YGJD';
    IF Length(Trim(EDIT1.TEXT))>0 THEN 
      A1 := A1 + ' WHERE DATETIME='''+EDIT1.TEXT+'''';不过当EDIT1.TEXT不为空时这样也未必对,c_hk(小李抢刀)说得也不尽对,因为有些数据库的日期常数不是这样的,如我所知的QEODBC是用花括号{}括起来的:{1991/01/23},而ORACLE必须用TO_DATE函数:TO_DATE('1991-01-23','YYYY-MM-DD')。不过如果你对格式有把握,也是可以的。
      

  8.   

    以下是偶找的一片文章,希望能够解决此问题!
    我在写一个“通用数据库查询系统”时,需要用SQL对一个日期型字段进行查询,突然发现Delphi没有日期型变量,在Foxpro中一对大括号{}就表示这是个日期型变量,而在Delphi中我竟然不知道如何表示。羞愧之余,到处找资料、查信息。
    先是看到在Delphi FAQ中言之凿凿地说可以用:where aDate:=#01/01/99#或是 where aDate:=“01/01/99”来查找,赶紧试一下,报语法错;后又在Delphi Chat中看到一位朋友说可以用如下语句来查找:where aDate:=Cast(‘01/01/99’ as Date);又连忙试一下,哈,没有出错了,而且有返回的记录,哈哈哈……,还没笑完,眼睛随便瞟了一眼结果就笑不出来了,因为结果完全不对,查出的结果的日期全为0000-00-00,这是怎么回事?赶快查SQL语言的书,说Cast是用来进行类型转换的,如果类型转换不正确的话并不会提示出错,而是返回一个无效值。看来,我就是碰到了类型转换不正确。拍了半天脑袋,灵机一动,是不是日期类型的格式不对,查看了一下Delphi显示的数据库中的日期型字段,发现它的格式是1999-9-20,我用的SQL语句是:where aDate:=Cast(‘99-9-20’ as Date);应该不会错,可是它的返回结果如何解释呢?为什么别人都可以正确运行,而我就是不行呢?实在没办法了,抱着死马当活马治的心情,调出WIN98的控制面板中区域设置,选中“日期”页,将其日期分隔符由“-”改为“/”,然后再来试运行:select * from aDataBase where aDate:=Cast(‘09/20/99’ as Date);哈哈,出来结果了,而且完全正确,我简直笑得涕泪横流。闹了半天,原来只是一个小小的日期分隔符在做怪。
    通过进一步试验,发现不管系统的短日期格式设成怎样,SQL语句都必须写成where aDate:=Cast(‘09/20/99’ as Date),为什么呢?嘿嘿,我也不知道!