想做个搜索功能
SQL数据库存了 用户生日信息birthday 
想根据 0-16岁 17-23 岁这样的年龄段搜索用户 
这个数据查询如何写
我晓得是拿生日和现在的时间比较 如何比较并能查询出结果?

解决方案 »

  1.   

    SELECT * FROM T WHERE DATEDIFF(YEAR,BIRTHDAY,GETDATE()) BETWEEN 0 AND 7
    SELECT * FROM T WHERE DATEDIFF(YEAR,BIRTHDAY,GETDATE()) BETWEEN 17 AND 23
      

  2.   

    select datediff(year,你的时间字段, cast(convert(char(10),getdate(),120) as datetime)) as 年龄
      

  3.   

    SELECT [0-16]=CASE WHEN  DATEDIFF(YEAR,BIRTHDAY,GETDATE()) BETWEEN 0 AND 16 THEN 1 ELSE  0 END,
    [17-23]=CASE WHEN  DATEDIFF(YEAR,BIRTHDAY,GETDATE()) BETWEEN 17 AND 23 THEN 1 ELSE  0 END
     FROM TB
      

  4.   


    select * from tb where datediff(year , birthday , getdate()) between 0 and 16
    select * from tb where datediff(year , birthday , getdate()) between 17 and 23
      

  5.   

    --更正,統計人數
    SELECT [0-16]=SUM(CASE WHEN  DATEDIFF(YEAR,BIRTHDAY,GETDATE()) BETWEEN 0 AND 16 THEN 1 ELSE  0 END),
    [17-23]=SUM(CASE WHEN  DATEDIFF(YEAR,BIRTHDAY,GETDATE()) BETWEEN 17 AND 23 THEN 1 ELSE  0 END)
     FROM TB
      

  6.   

    select * from tb where datediff(year , birthday , getdate()) between 0 and 16
    select * from tb where datediff(year , birthday , getdate()) between 17 and 23
      

  7.   

    declare @tb table (borndate smalldatetime)
    insert into @tb (Borndate)
    (select '1996-05-6' union all
    select '1996-05-7' union all
    select '1996-05-6' union all
    select '1996-05-6' union all
    select '1985-05-6' 
    )select * from @tb where DATEDIFF(year,borndate,getdate()) between 0 and 16
    select * from @tb where DATEDIFF(year,borndate,getdate()) between 17 and 23
      

  8.   

    SELECT * FROM TB WHERE DATEDIFF(YY,birthday,GETDATE()) BETWEEN 0 AND 16