ALTER PROCEDURE [dbo].[测试] 
(
 @strtime datetime
 @endtime datetime
)
AS
declare
@hour varchar(10),
@hour1 varchar(10),
@min varchar(10),
@min1 varchar(10)
set @hour=convert(varchar,datepart(hour,@strtime))
set @min=convert(varchar,datepart(mi,@strtime))
set @hour1=convert(varchar,datepart(hour,@endtime))
set @min1=convert(varchar,datepart(mi,@endtime))select count(distinct 卡片编号) from tab_Que_outin 
where 
刷卡时间 between
  (convert(datetime, @hour+':'+@min))
and
  (convert(datetime, @hour1+':'+@min1)) 为什么查出来的数据是0呢!我的数据库表有数据啊!请问我这样的写是不是有逻辑错误啊!

解决方案 »

  1.   

    这样改看看。不知道搂主是要查所有日期的,还是指定日期的?没太看明白。
    刷卡时间 between
      (convert(datetime, convert(varchar(11), 刷卡时间, 120) + @hour+':'+@min))
    and
      (convert(datetime, convert(varchar(11), 刷卡时间, 120) + @hour1+':'+@min1))
      

  2.   

    是不是@hour,@min,@hour1,@min1后面有空格
    你去掉看看,用RTRIM
      

  3.   

    select count(distinc 编号) from tb where
    '2000-1-1' + ' '+ convert(varchar(100),刷卡时间,114)
    between
    '2000-1-1' + ' '+ convert(varchar(100),@strtime,114)
    and
    '2000-1-1' + ' '+ convert(varchar(100),@endtime,114)
      

  4.   

    请print :convert(datetime, @hour+':'+@min)看看这个结果是什么!然后是否与刷卡时间 格式一致、、、、、、、、?
      

  5.   

    where 
    刷卡时间 between
      (convert(datetime, @hour+':'+@min))
    and
      (convert(datetime, @hour1+':'+@min1)) 
    --------------
    沒有年份?
      

  6.   

    where convert(datetime, 刷卡时间, 108) between
    convert(datetime, @strtime, 108) and convert(datetime, @endtime, 108)
      

  7.   

    搂主好像要的是这样。前面那些变量定义都不用了。select count(distinct 卡片编号) from tab_Que_outin 
    where 
    刷卡时间 between
      convert(varchar(16), @strtime, 120)
    and
      convert(varchar(16), @endtime, 120)
      

  8.   

    谢谢大家的回复!
    其实我是想取两个时间段的!可是时间是这样的格式在前台
    是日期+小时+秒的!因此我才那样写!
    最后发现错误了!
    其实就是  date.text=2006-11-27
              hour.selectvalue=8
              min.selectvalue=30