时间分为3个字段,分别为为year,month,day如何比较2005-1-1到2006-5-5?
请帮忙举例说明下,谢谢~

解决方案 »

  1.   

    时间类型的字段本身就能比较datediff()
      

  2.   


    declare @t table (myyear int,mymonth int,myday int)
    insert into @t values(2005,1,1)
    insert into @t values(2003,2,5)
    insert into @t values(2006,5,5)
    insert into @t values(2006,1,2)select * 
    from @T 
    where convert(char(10),cast(myyear as varchar)+'-'+cast(mymonth as varchar)+'-'+cast(myday as varchar),120) between '2005-1-1' and '2006-5-5'
    /*
    myyear      mymonth     myday       
    ----------- ----------- ----------- 
           2005           1           1 
           2006           5           5 
           2006           1           2 (所影响的行数为 3 行)
    */
      

  3.   

    ---例子,不知道是不是楼主要的
    declare @year varchar(4),@month varchar(2),@day varchar(2)select 是否在这个区间内=case when cast((@year+'-'+@month+'-'+@day) as datetime) between '2005-1-1' and '2006-5-5' then '是' else '否' end
      

  4.   

    where convert(char(10),cast(myyear as varchar)+'-'+cast(mymonth as varchar)+'-'+cast(myday as varchar),120) between '2005-1-1' and '2006-5-5'
    IS OK
      

  5.   


    declare @table_ table( a varchar(10),b varchar(10),c varchar(10))
    insert into  @table_ select '2005/10/1','2007/10/4','2007/10/7'
    insert into  @table_ select '2006/10/2','2007/10/5','2007/10/8'
    insert into  @table_ select '2007/10/3','2007/10/6','2007/10/9'
    SELECT YEAR(a) as year_, MONTH(b)as month_, DAY(c) as day_  from  @table_
      

  6.   

    不知楼主是何意思不过利用函数datediff()可以比较出两个日期相隔的月/日/年的值详细参数及使用说明,可以参与联机帮助
      

  7.   

    //修改一下别人的代码declare   @year   varchar(4),@month   varchar(2),@day   varchar(2) 
    set @year='2005'
    set @month='01'
    set @day='25'
    select   是否在这个区间内=case when  cast((@year+'-'+@month+'-'+@day)  as  datetime)  between '2005-1-1' and  '2006-5-5'   then  '是'  else  '否'   end 
      

  8.   

    这个只能在SQLServer中执行,在MYSQL或ORACLE中那?