这样可以:
Select count(distinct MyId) from Mytable where MyDate>'2001-6-1' and MyDate<'2001-7-1'

解决方案 »

  1.   

    Select count(distinct MyId)/datediff("dd",'2001-6-1','2001-7-1') from Mytable where MyDate>'2001-6-1' and MyDate<'2001-7-1' 
      

  2.   

    而且以上两位的答案是错的,因为不同的两天他们的MyID号有可能重复,比如6月1日有55个MyID,6月2日有60个MyId号,这两天重复的MyId号有50个,则按楼上的方法查询出是50+5+10=65个,但我要求得到115这个数字。
      

  3.   

    select count(distinct(Mydate,Myid)) from Mytable where to_char(Mydate,'yyyy-mm-dd')>'2001-6-1' and to_char(Mydate,'yyyy-mm-dd')<'2001-7-1'  
      

  4.   

    ls_date:=edit1.text+edit2.text
    ...
    Select * from Mytable where MyDate like ''%+ls_date+%'' 
    ...
    coun:=*.recordcount;
      

  5.   

    可以用Extract,
    在Delphi5自带的Local SQL Help里有。
    应该能解决你的问题。
    select count(MyID) from MyTable 
    where EXTRACT(MONTH FROM MyDate) = 6
          
      

  6.   

    哇,好麻烦啊。
    select myid,count(*) from 表名 where mydate>:变量1 and mydate<:变量2
      

  7.   

    如果用的是 SQL Server,可以这样(没有试过,应该没有问题)://按myid汇总每日的个数
    select myid,
      c01=case day(mydate) when 1 then count(myid) end,
      c02=case day(mydate) when 2 then count(myid) end,
      c03=case day(mydate) when 3 then count(myid) end,
      c04=case day(mydate) when 4 then count(myid) end,
      c05=case day(mydate) when 5 then count(myid) end,
      c06=case day(mydate) when 6 then count(myid) end,
        .
        .
        .
      c31=case day(mydate) when 31 then count(myid) end,
      total = count(myid)   //总数
    from tablename
    where (year(mydate)=2001) and (month(mydate)=6)
    GROUP BY myid//把它写到存储过程中来计算汇总数很方便
    //语句的执行效率我不知道怎么样
      

  8.   

    怎样计算当月平均每天的汇总数目呢?我觉得jingpingyi的思路比较可以理解,但也是挺繁的,而且还是没有办法取出要计算的那个月的天数呀!即在SQLServer中,如何随便给出任一年份和月份,用SQL语句查询知道那月的天数。
      

  9.   

    为什么要知道某月的天数?
    比如没有31日,那c31没有数据就是了。把我上面的查询写到存储过程中,
    先把查到的每日列表数据存到临时表中,
    然后对该临时表进行汇总、统计处理,
    什么样的统计基本上应该都可以解决的。======================//判断日期间的天数:declare @da1 datetime
    declare @da2 datetimeselect @da1='2001-06-01'
    select @da2='2001-07-01'select DATEDIFF(day,@da1,@da2)    ---输出30select @da1=@da2
    select @da2='2001-08-01'select DATEDIFF(day,@da1,@da2)    ---输出31go
      

  10.   

    select avg(num) from (select count(*) num from Mytable where to_char(Mydate,'yyyy-mm-dd') like '2001-06%'  group by Mydate) 
    这样就可以得出6月份平均每天的个数,但是这要求每天都至少有一条记录,
    如果Mytable可以满足这样就可以了,否则可能还有点问题
      

  11.   

    你你一个存储过程获取指定年月份的天数,注年份要为4位
    create proc getmonthnum @y int,@m int,@n  int out
    as
    select @n=datediff(day,cast(@y as varchar(4))+'-'+cast(@m as varchar(2))+'-1',dateadd(month,1,cast(@y as varchar(4))+'-'+cast(@m as varchar(2))+'-1'))
    使用举例:declare 
    @y varchar(4),@m varchar(2),@n int
    select @y='2000',@m='2'
    exec getmonthnum @y,@m,@n out
    select @n
      

  12.   

    select myid,mydate from mytable where mydate>=:P_date1 and mydate<=:P_date2 
    group by myid,mydatep_date1=strtodate(format('%s-%s-01',edit1,edit2)//format的具体用法请查书
    p_date1=strtodate(format('%s-%s-01',edit1,inttostr(strtoint(edit2)+1))
    所需的数目就是查询的记录数。
      

  13.   

    更正
    p_date1=strtodate(format('%s-%s-01',edit1,edit2)//format的具体用法请查书
    p_date2=strtodate(format('%s-%s-01',edit1,inttostr(strtoint(edit2)+1))
    所需的数目就是查询的记录数。 
      

  14.   

    以前我们搞工程的时候写了一个结合delphi中的masteredit(好象是叫这个名字把)一起使用的一个日期处理函数,可以跟数据库的日期处理很好的结合起来使用。比如你要提取多少日期里的东西就直接在控件中输入日期,我们函数可以将其转成正确的数据库日期表达方式并得出结果。
    我不知道你要的是不是这东西,如果要给我mial.我给发过去,---注:该函数不是我写的,是另一个同事写的。--其实也很简单的,大家可以试着自己去编编看。haha a  fasdfdsfsdfsdfsd
    sdfsd
    af
    sdf
    sd
    f
      

  15.   

    可能是我描述得太复杂了吧,其实问题有两个:
    1.Select count(distinct MyId) from Mytable where MyDate='2001-6-1'
      Select count(distinct MyId) from Mytable where MyDate='2001-6-2'
      ......
      Select count(distinct MyId) from Mytable where MyDate='2001-6-30' 
    怎样做一个通用过程求以上30条语句的查询结果之和。
    2.给出年份和月份,在Delphi(也可以在SQLServer)中通过一个通用过程知道这个月的天数呢?
      

  16.   

    求出 直接用 
    1. SELECT * FORM YOURTABLE WHERE myday<'xxx' and mydate>'xxx' 到tquery 然后 
    2. 读取 Tquery1.recoderset.count不就可以拉?何必一条条SELECT? 
      

  17.   

    可用delphi 对他进行参数传递:
    query1.active := false;
    query1.sql.clear;
    query1.parambyname('qssj').asstring := edit1.text;//qssj为起始时间
    query1.parambyname('zzsj').asstring := edit2.text;
    query1.sql.add('Select count(distinct MyId) from Mytable where MyDate> :qssj    and MyDate<:zzsj');
    query1.execsql;
    query1.active := true;
    这样就灵活了