CREATE TABLE tablea(
CustName varchar(100),
BeginDate varchar(20),
EndDate varchar(20)
)insert into tablea values('A','1991年','1993年')
insert into tablea values('A','1994年','1996年')
insert into tablea values('B','1992年','1996年')
insert into tablea values('B','1996年','2005年')CREATE PROCEDURE pr_IsExists(
@CustName varchar(100),
@date varchar(10),
@OUT varchar(5) OUTPUT
)
AS
IF exists(select * from tablea 
where CustName=@CustName 
and left(BeginDate,4)<=@date
and left(EndDate,4)>@date
)
SELECT @OUT='TRUE'
ELSE 
SELECT @OUT='FALSE'
GODECLARE @IsEXISTS VARCHAR(5)
EXECUTE pr_IsExists 'A','2005',@IsEXISTS OUTPUT
SELECT @IsEXISTS

解决方案 »

  1.   

    CREATE PROCEDURE pr_IsExists(
    @CustName varchar(100),
    @date varchar(10),
    @OUT varchar(5) OUTPUT
    )
    ASIF exists(select 1 from tablea 
    where CustName=@CustName 
    and (Year(@date) Between BeginDate And EndDate)
    )
    SELECT @OUT='TRUE'
    ELSE 
    SELECT @OUT='FALSE'
    GO
    BeginDate和EndDate本来就是4位的。
      

  2.   

    我是按照楼主提供的数据做的, '1991年'是字符串,才使用left的
      

  3.   

    哦,不好意思,那是我看错了。^_^如果输入参数是时间的话。CREATE PROCEDURE pr_IsExists(
    @CustName varchar(100),
    @date varchar(10),
    @OUT varchar(5) OUTPUT
    )
    ASIF exists(select 1 from tablea 
    where CustName=@CustName 
    and (Year(@date) Between Left(BeginDate,4) And Left(EndDate,4))
    )
    SELECT @OUT='TRUE'
    ELSE 
    SELECT @OUT='FALSE'
    GO