语法如下:
select count(*) as 数量 From 变化信息 where convert(datetime,上传时间) between '" & DTPicker1.Value & "'  and   '" & DTPicker2.Value & "'表中 上传时间 那列里的数据格式是
2008-03-03 14:34:23
  我只是想借助字段中的日期查询出来,时间没用 请问我该怎么做啊??上面那段代码肯定是不对,总是查错,请高手帮个忙呗

解决方案 »

  1.   

    select count(*) as 数量 From 变化信息 where substring(convert,1,10) between '" & DTPicker1.Value & "'  and  '" & DTPicker2.Value & "' 
      

  2.   

    前辈,你能给小弟解释一下  substring(convert,1,10)的意思吗??
      

  3.   

    substring的意思如下:
    语法
    SUBSTRING ( expression , start , length ) 参数
    expression是字符串、二进制字符串、text、image、列或包含列的表达式。不要使用包含聚合函数的表达式。start是一个整数,指定子串的开始位置。length是一个整数,指定子串的长度(要返回的字符数或字节数)。说明  由于在 text 数据上使用 SUBSTRING 时 start 和 length 指定字节数,因此 DBCS 数据(如日本汉字)可能导致在结果的开始或结束位置拆分字符。此行为与 READTEXT 处理 DBCS 的方式一致。然而,由于偶而会出现奇怪的结果,建议对 DBCS 字符使用 ntext 而非 text。
    返回类型
    如果 expression 是支持的字符数据类型,则返回字符数据。如果 expression 是支持的 binary 数据类型,则返回二进制数据。
      

  4.   

    卡倒了,我的意思是 substring(convert,1,10) 的目的是什么,是把字段里 的日期单独提出来,不读时间??
      

  5.   

    如果上传时间的数据类型是日期时间,那么用FORMAT函数去格式化即可
    如果上传时间的数据类型是字符串,那么只需要用substring取出前10位就好了
      

  6.   

    哦哦
    太感谢了,原来还有这个函数啊
    太好了,我那个数据类型的VARCHAR,应该是字符型的吧???我新手,不懂,请见谅
      

  7.   

    前辈,
    我是这样写的
    select count(*) as 数量 From 变化信息 where substring(convert,1,10) between '" & DTPicker1.Value & "'  and  '" & DTPicker2.Value & "' 
    把那个convert,改成字段名,上传时间了,但我就是不明白,
    还是有时候好用,有时候不好用
    比如,2004-03-08那天有两条数据,但我死活查不出来,就显示0,这是怎么回事啊,而且还有别的日期的,经常不好用
      

  8.   

    select count(*) as 数量 From 变化信息 where 上传时间 between '" & DTPicker1.Value & " 00:00:00'  and  '" & DTPicker2.Value & " 23:59:59'
      

  9.   


    select count(*) as 数量 From 变化信息 where substring(convert(datetime,上传时间),1,10) between '" & Format(DTPicker1.Value, "yyyy-mm-dd") & "'  and  '" & Format(DTPicker2.Value, "yyyy-mm-dd") & "'"最好不要把日期时间数据类型搞成字符串类型,查询速度会受影响。如果是日期时间型,这样就可以了:select count(*) as 数量 From 变化信息 where 上传时间 between '" & Format(DTPicker1.Value, "yyyy-mm-dd") & "'  and  '" & Format(DTPicker2.Value + 1, "yyyy-mm-dd") & "'"
      

  10.   


    前辈,按照你这个写的,我是用VB查询SQL,运行后,VB提示  实时错误3709,连接无法用于执行此操作,在此上下文中它可能已经被关闭或无效,
    但我并没有关啊
      

  11.   

    Private Sub Command1_Click()Dim CWN1         As New ADODB.Connection
              Dim QQ1         As New ADODB.Recordset
              
              CWN1.ConnectionString = "Provider=SQLOLEDB.1;Integrated Security=SSPI;Persist Security Info=False;Initial Catalog=userinfo;Data Source=HZQ;User Id=sa;Password=sa;"
              CWN1.ConnectionTimeout = 0
              CWN1.Open
              
              QQ1.CursorLocation = adUseClient
              QQ1.Open " select count(*) as 数量 From 变化信息 where substring(convert(datetime,上传时间),1,10) between '" & Format(DTPicker1.Value, "yyyy-mm-dd") & "'  and  '" & Format(DTPicker2.Value, "yyyy-mm-dd") & "'"", CWN1, adOpenDynamic, adLockOptimistic"
                    Set DataGrid1.DataSource = QQ1
            
            End Sub上面是我的代码,问题出在哪里呢? 提示 实时错误3709,连接无法用于执行此操作,在此上下文中它可能已经被关闭或无效, 
      

  12.   


    QQ1.Open " select count(*) as 数量 From 变化信息 where substring(convert(datetime,上传时间),1,10) between '" & Format(DTPicker1.Value, "yyyy-mm-dd") & "'  and  '" & Format(DTPicker2.Value, "yyyy-mm-dd") & "'"", CWN1, adOpenDynamic, adLockOptimistic" 
      

  13.   

    QQ1.Open " select count(*) as 数量 From 变化信息 where substring(convert(datetime,上传时间),1,10) between '" & Format(DTPicker1.Value, "yyyy-mm-dd") & "'  and  '" & Format(DTPicker2.Value, "yyyy-mm-dd") & "'"", CWN1, adOpenDynamic, adLockOptimistic" 
    这编辑器        
      

  14.   

    前辈,咋啦??我只是想根据 上传时间里的 年月日 用DTPicker 做个统计查询,别的方式我不会了,是不是我的方式有问题啊???
      

  15.   

    QQ1.Open " select count(*) as 数量 From 变化信息 where substring(convert(datetime,上传时间),1,10) between '" & Format(DTPicker1.Value, "yyyy-mm-dd") & "'  and  '" & Format(DTPicker2.Value, "yyyy-mm-dd") & "'", CWN1, adOpenDynamic, adLockOptimistic 不能引号里