我在程序中用四个DTPICKER控件实现年月日时分秒的精确查找。请问下面的语句为什么不能按年月日+时分秒的方式精确查找数据呢?
strsql = "select * from invoice where qtime between cdate('" & dtpicker1.Value & +&dtpicker2.value&"') and cdate('" & dtpicker3.Value &+*dtpicker4.value& "')"

解决方案 »

  1.   

    strsql = "select * from invoice where qtime between '" & dtpicker1.Value & " " & dtpicker2.value&"' and '" & dtpicker3.Value & " " & dtpicker4.value& "'"
      

  2.   

    错误的,提示缺少语句结束,提示在AND错误
      

  3.   

    strsql = "select * from invoice where qtime between '" & Format(dtpicker1.Value, "yyyy-mm-dd") & " " & Format(dtpicker2.value, "HH:nn:ss" & "' and '" & Format(dtpicker3.Value, "yyyy-mm-dd") & " " & Format(dtpicker4.value, "HH:nn:ss") & "'"
      

  4.   

    现在SQL语句已经改成了这样,还是报错。
    cmd.CommandText = "select * from abc where z between '" & CDate(DTPicker1.Value) & " " & CDate(DTPicker2.Value) & "' and '" & CDate(DTPicker3.Value) & " " & CDate(DTPicker4.Value) & "'"ACCESS数据库里面的设置是时间日期格式。
    VB里面的DTPICKER控件格式设置的是:
      DTPicker1.Format = dtpCustom
      DTPicker2.Format = dtpCustom
      DTPicker1.CustomFormat = "yyyy-MM-dd "
      DTPicker2.CustomFormat = "tt:HH:mm:ss"
      DTPicker3.Format = dtpCustom
      DTPicker4.Format = dtpCustom
      DTPicker3.CustomFormat = "yyyy-MM-dd "
      DTPicker4.CustomFormat = "tt:HH:mm:ss"
      

  5.   

    access数据库的话需要把单引号改为#号 
    cmd.CommandText = "select * from abc where z between #" & CDate(DTPicker1.Value) & " " & CDate(DTPicker2.Value) & "# and #" & CDate(DTPicker3.Value) & " " & CDate(DTPicker4.Value) & "#"
      

  6.   

    of123,你的方法少一个括号,加上括号以后,必须把我的数据库字段改为文本格式,就可以实现查找了,否则报错。为什么呢?难道不能把ACCESS里面的字段定义为时间日期类型吗?如果这样的话,大量的数据在查找的时候会怎样呢?
      

  7.   

    最后能运行的代码是这样的:但是数据库Z字段必须为文本格式,为什么呢?
    cmd.CommandText = "select * from abc where z between '" & Format(DTPicker1.Value, "yyyy-mm-dd") & " " & Format(DTPicker2.Value, "am/pm:HH:mm:ss") & "' and '" & Format(DTPicker3.Value, "yyyy-mm-dd") & " " & Format(DTPicker4.Value, "am/pm:HH:mm:ss") & "'"
      

  8.   

    access数据库的话需要把单引号改为#号 
    cmd.CommandText = "select * from abc where z between #" & CDate(DTPicker1.Value) & " " & CDate(DTPicker2.Value) & "# and #" & CDate(DTPicker3.Value) & " " & CDate(DTPicker4.Value) & "#"
      

  9.   

    Leftie:为什么我没有加#也实现了时间查找呢?改为单引号又有什么作用,好处在哪里?
      

  10.   

    数据库为ACESS的,查询日期型字段的方法:
    select * from tablename 日期字段 between #2012-12-1# and #2012-12-31#
    数据库为SQL的,查询日期型字段的方法:
    select * from tablename 日期字段 between '2012-12-1' and '2012-12-31'