select isnull(count(*),0) from rk_day_info where rjsj between'2014-01-01 00:00:00.000'and '2014-01-11 23:59:59.000'

解决方案 »

  1.   

    就是这么个sql 表里的数据从2014-01-01起开始 截止日期不定
     假设表里的日期截止到2014-01-09 期望上面sql返回0按照这个,上面的语句确实会返回 2014-01-01-----2014-01-10 直接的记录条数,不太可能返回0 的
      

  2.   

    select count(*) from table where column between A1 and  A2语句
    只要A1在表里存在  就永远返回非0吗我以为A2“越界”(在表里不存在)就回返回0啊
    前几天是这样的啊 莫非这几日做梦inggggg
      我想以 A2为界用sql判断一下啊 求解
      

  3.   


    哦,那就是这样:
    select count(*) from table 
    where column between '2014-01-11' and  '2014-01-11 23:59:59.000'
      

  4.   

    把A2弄到前面比较一下呗SELECT CASE WHEN MAX(rjsj) < '2014-01-11 23:59:59.000' THEN 0 ELSE COUNT(*) END 
    FROM rk_day_info WHERE rjsj BETWEEN '2014-01-01 00:00:00.000' AND '2014-01-11 23:59:59.000'
      

  5.   

    大概这样DECLARE @d DATETIME
    SET @d='2014-01-10 23:59:59.000'
    DECLARE @sql VARCHAR(max)
    SET @sql='
    select count(*) from table 
    where column between ''2014-01-11'' and '+CASE WHEN CONVERT(VARCHAR(30),@d,121)>='2014-01-11' THEN '''2014-01-11''' ELSE ''''+CONVERT(VARCHAR(30),@d,121)+'''' END +''
    EXEC @sql
      

  6.   

    像7楼那样,用case when 判断传入的日期是否达到你规定的界限,如果到了,就赋予小于开始时间的(使其返回null),然后用isnull来写死0
      

  7.   

    必须声明变量 @sql 我不懂存储啊啊
      

  8.   

    我不懂啊又好象懂其实就是,对返回的结果,再次做个判断,如果返回的日期都是小于'2014-01-10 23:59:59.000',那么就返回0,否则就返回count(*)