id       cDatetemp        cXz1        12/22-01/19     魔羯座
2        01/20-02/18     水瓶座
3        02/19-03/20     雙魚座............求一条跟据生日最快速获取星座的语句!

解决方案 »

  1.   

    --> 测试数据: #tb
    if object_id('tempdb.dbo.#tb') is not null drop table #tb
    go
    create table #tb (id int,cDatetemp varchar(11),cXz varchar(6))
    insert into #tb
    select 1,'12/22-01/19','魔羯座' union all
    select 2,'01/20-02/18','水瓶座' union all
    select 3,'02/19-03/20','雙魚座'declare @rq datetimeset @rq='20100203'select * from #tb where @rq between ltrim(year(@rq))+'/'+left(cDatetemp,5) and ltrim(year(@rq))+'/'+right(cDatetemp,5)id          cDatetemp   cXz
    ----------- ----------- ------
    2           01/20-02/18 水瓶座(1 行受影响)
      

  2.   

    把cDatetemp字段分解为日期1,日期2
    当生日在 日期1与日期2 之间时(比较时只比较月和日.或者将日期1,日期2,生日三个日期的年设置为同一值,这样就直接比较三个日期),就是对应的星座
      

  3.   

    --> 测试数据:#
    if object_id('tempdb.dbo.#') is not null drop table #
    create table #(id int, cDatetemp varchar(11), cXz varchar(8))
    insert into #
    select 1, '12/22-01/19', '魔羯座' union all
    select 2, '01/20-02/18', '水瓶座' union all
    select 3, '02/19-03/20', '雙魚座'declare @ datetime
    set @ = '20100203'
    select top 1 cXz from # where right(convert(varchar,@,111),5) >= left(cDatetemp,5) order by cDatetemp
    --水瓶座
      

  4.   

    --> 测试数据:#
    if object_id('tempdb.dbo.#') is not null drop table #
    create table #(id int, cDatetemp varchar(11), cXz varchar(8))
    insert into #
    select 1, '12/22-01/19', '魔羯座' union all
    select 2, '01/20-02/18', '水瓶座' union all
    select 3, '02/19-03/20', '雙魚座'declare @ datetime
    set @ = '20100118'
    if right(convert(varchar,@,111),5)<='01/19'
    select '魔羯座'
    else 
    select top 1 cXz from # where right(convert(varchar,@,111),5) >= left(cDatetemp,5) order by cDatetemp
    --魔羯座