select * from tablename where datediff(dd,cast(rtrim(datepart(yy,getdate()))+'-'+ rtrim(datepart(mm,表里日期字段))+'-'+ rtrim(datepart(dd,表里日期字段)) as datetime),getdate())=2
现在要写一个提示查询,在每个人生日前两天提示,也就是在每个人生日前两天查询表,现在查询条件是在生日日期的前两天,查询相应的生日日期 如 1980-10-01的生日,在09-29当天的时候,查询所有10-01出生的人,怎么写条件啊 ------------------------------------- select * from tb where datediff(day,getdate(),cast(cast(year(getdate()) as varchar) + right(convert(varchar(10),生日,120),6) as datetime)) = 2
select * from 表 where dateadd(day,2,getdate())=生日字段
create function dd(@dt datetime,@gt datetime) returns varchar(50) as begin declare @sql varchar(50) if((datepart(mm,@dt)=datepart(mm,@gt)) and (datepart(dd,@dt)+2=datepart(dd,@gt))) set @sql='您的生日到了' else set @sql='您的生日还远着呢' return @sql end --调用函数 select dbo.dd('1984-9-23',getdate()) --返回:您的生日还远着呢 select dbo.dd('1984-9-24',getdate()) --返回:您的生日到了
不好意思。那个函数要改一下。有点疏忽了` create function dd(@dt datetime,@gt datetime) returns varchar(50) as begin declare @sql varchar(50) set @dt=dateadd(dd,2,@dt) if((datepart(mm,@dt)=datepart(mm,@gt)) and (datepart(dd,@dt)=datepart(dd,@gt))) set @sql='您的生日到了' else set @sql='您的生日还远着呢' return @sql end
噢,楼主原来是想得到那些人啦`那改下: alter function dd(@dt datetime,@gt datetime) returns varchar(50) as begin declare @sql int set @dt=dateadd(dd,2,@dt) if((datepart(mm,@dt)=datepart(mm,@gt)) and (datepart(dd,@dt)=datepart(dd,@gt))) set @sql=1 return @sql end create table ff(id int,name varchar(50),brithday datetime) insert into ff select 1,'wsp','1984-09-12' insert into ff select 2,'w','1984-09-24' insert into ff select 3,'s','1984-09-25' insert into ff select 4,'p','1984-09-24'select name from ff where dbo.dd(brithday,getdate())=1
*
from
tablename
where datediff(dd,cast(rtrim(datepart(yy,getdate()))+'-'+
rtrim(datepart(mm,表里日期字段))+'-'+
rtrim(datepart(dd,表里日期字段)) as datetime),getdate())=2
-------------------------------------
select * from tb where datediff(day,getdate(),cast(cast(year(getdate()) as varchar) + right(convert(varchar(10),生日,120),6) as datetime)) = 2
returns varchar(50)
as
begin
declare @sql varchar(50)
if((datepart(mm,@dt)=datepart(mm,@gt)) and (datepart(dd,@dt)+2=datepart(dd,@gt)))
set @sql='您的生日到了'
else
set @sql='您的生日还远着呢'
return @sql
end
--调用函数
select dbo.dd('1984-9-23',getdate()) --返回:您的生日还远着呢
select dbo.dd('1984-9-24',getdate()) --返回:您的生日到了
create function dd(@dt datetime,@gt datetime)
returns varchar(50)
as
begin
declare @sql varchar(50)
set @dt=dateadd(dd,2,@dt)
if((datepart(mm,@dt)=datepart(mm,@gt)) and (datepart(dd,@dt)=datepart(dd,@gt)))
set @sql='您的生日到了'
else
set @sql='您的生日还远着呢'
return @sql
end
alter function dd(@dt datetime,@gt datetime)
returns varchar(50)
as
begin
declare @sql int
set @dt=dateadd(dd,2,@dt)
if((datepart(mm,@dt)=datepart(mm,@gt)) and (datepart(dd,@dt)=datepart(dd,@gt)))
set @sql=1
return @sql
end
create table ff(id int,name varchar(50),brithday datetime)
insert into ff select 1,'wsp','1984-09-12'
insert into ff select 2,'w','1984-09-24'
insert into ff select 3,'s','1984-09-25'
insert into ff select 4,'p','1984-09-24'select name from ff where dbo.dd(brithday,getdate())=1