sql: 生日三个月内有效

原创 2013年12月02日 15:13:29
DECLARE @birthday  datetime,@stat datetime,@end datetime,@statbirthday datetime,@endbirthday datetime,@thirdbirthday datetime,@firthbirthday datetime, @year int,@month int , @day int,@str varchar(20),@total int,@firthmonth int,@thirmonth int,@now  datetime,@vipno nvarchar(10) --参数
set @vipno='8888888'
set @now='2014-01-25'
set @year=Year(@now)
select  @birthday=birthday from vip1 where vipno=@vipno
set @month=month(@birthday)
set @day=day(@birthday)
set @str=cast(@year as varchar(4))+'-'+cast(@month as varchar(2))+'-'+cast(@day as varchar(2))
set @birthday=cast(@str as datetime)
--會員生日有效生首日起至3個月內有效
set @firthbirthday=DATEADD(mm, DATEDIFF(mm,0,@birthday)-2, 0)--DATEADD(mm, DATEDIFF(mm,0,@birthday), 0)  --当月的第一天
--set @thirdbirthday=DATEADD(ms,-3,DATEADD(mm, DATEDIFF(m,0,getdate())+3, 0)) --后三个月最后的一天
SELECT @firthbirthday=DATEADD(MONTH,-2,DATEADD(MONTH,DATEDIFF(MONTH,0,@birthday),0))
--select cast(@firthbirthday as datetime)
--set @firthbirthday=DATEADD(MONTH,-2,DATEADD(MONTH,DATEDIFF(MONTH,0,@birthday),0))--DATEADD(Month,0,CONVERT(datetime,CONVERT(char(8),getdate(),120)+'1'))
--select @firthbirthday
--DATEADD(mm,0, DATEDIFF(mm,0,@birthday), 0)  --前三个月的第一天
--set @firthbirthday=convert(datetime, @thirdbirthday)
--SELECT  三個月有效 塗聚文 涂聚文
set @firthmonth=month(@now)-2
set @thirmonth=month(@now)
set @thirdbirthday=DATEADD(ms,-3,DATEADD(mm, DATEDIFF(mm,0,@now)+1, 0)) --当月最后的一天
set @thirdbirthday=cast(@thirdbirthday as datetime)
set @statbirthday=DATEADD(mm, DATEDIFF(mm,0,@birthday)-13, 0)
set @endbirthday=DATEADD(ms,-3,DATEADD(mm, DATEDIFF(mm,0,@birthday)-1, 0))
--select @statbirthday,@endbirthday,@firthbirthday,@thirdbirthday,@birthday,@firthmonth,@thirmonth
--以月份來吧
SELECT  *  FROM View_birthdayVipdlyList WHERE DATEDIFF(month,NowBirthday,@now)>=0 and  DATEDIFF(month,NowBirthday,@now)<=2  and vipno=@vipno order by VipBirthdayDate desc

--SELECT  *  FROM vip1 WHERE indate>@statbirthday AND  indate<@endbirthday and  month(birthday)>=@firthmonth and month(birthday)<=@thirmonth --and vipno=@vipno

--SELECT @total=ISNULL(SUM(amount),0) FROM View_birthdayVipdlyList WHERE indate>@statbirthday AND  indate<@endbirthday and  month(birthday)>=@firthmonth and month(birthday)<=@thirmonth and vipno=@vipno
--SELECT @total=@total*.01 



SELECT  count(*) as 'total'  FROM View_birthdayVipdlyList WHERE DATEDIFF(month,NowBirthday,getdate())>=0 and  DATEDIFF(month,NowBirthday,getdate())<=2  and vipno=@vipno


if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[GetVipNowBirthday]') and xtype in (N'FN', N'IF', N'TF'))
drop function [dbo].[GetVipNowBirthday]
GO
CREATE   function  GetVipNowBirthday
(  
   @vipno nvarchar(10), --参数
   @now datetime
)
returns datetime
AS
begin
declare @NowBirthday datetime, @birthday  datetime,@stat datetime,@end datetime,@statbirthday datetime,@endbirthday datetime,@thirdbirthday datetime,@firthbirthday datetime, @year int,@month int , @day int,@str varchar(40),@total decimal

select @birthday=birthday from vip1 where vipno=@vipno and birthday is not null
set @year=Year(@now)
if month(@now)=1 and month(@birthday)=12
begin
   set @year=@year-1
end
if month(@now)=1 and month(@birthday)=11
begin
   set @year=@year-1
end
if month(@now)=2 and month(@birthday)=12 
begin
   set @year=@year-1
end
set @month=month(@birthday)
set @day=day(@birthday)
set @str=cast(@year as varchar(4))+'-'+cast(@month as varchar(2))+'-'+cast(@day as varchar(2))
set @NowBirthday=convert(datetime,@str) ---cast(@str as datetime)
return @NowBirthday
end
GO

select top 100  vipno,birthday,[dbo].[GetVipNowBirthday](vipno,'2014-03-23') as 'now' from dbo.vip1 where month(birthday)=12 or month(birthday)=11


版权声明:本文为博主原创文章,未经博主允许不得转载。

sql: 生日三个月内有效

DECLARE @birthday datetime,@stat datetime,@end datetime,@statbirthday datetime,@endbirthday datetim...

如何在三个月内获得三年的工作经验[How To Get Three Years's Expirence in Three Months

很多人问我:快毕业我应该怎么办?三个月说长不长,说短不短,如何在最短的时间呢理清自己的思路,找到自己的方向呢?是一篇很不错的文章,它告诉我们,只要方法正确,3个月能做的事很多,并且,最重要的是:不仅要...
  • hyfound
  • hyfound
  • 2016年01月14日 09:56
  • 211

如何在三个月内获得三年的工作经验(转载)

很多职场新人都谈到了工作经验的问题,似乎招聘公司不给你机会,你就没办法获得必要的工作经验,其实并不一定。   很多资料在网上都是可以找到的,只是看你具备不具备足够的信息收集与处理能力,而这个收集与处理...

如何在三个月内获得三年的工作经验

很多职场新人都谈到了工作经验的问题,似乎招聘公司不给你机会,你就没办法获得必要的工作经验,其实并不一定。很多资料在网上都是可以找到的,只是看你具备不具备足够的信息收集与处理能力,而这个收集与处理信息的...

如何在三个月内创立一家估值200亿的游戏公司?

很长一段时间,游戏公司一直是土豪的代名词,据说某游戏公司给一位主策的年终奖是一套价值千万的房子(真实案例),有越来越多创业者投身到游戏领域中来,抱着“做一年然后套现卖掉”的想法开始创业。 一年卖...

如何在三个月内获得三年的工作经验

CSDN博客不再经常更新,更多优质文章请来 粉丝联盟网 FansUnion.cn! (FansUnion)        只要方法正确,3个月能做的事很多,并且,最重要的是:不仅要学,而且要习,那样才...

如何在三个月内获得三年的工作经验

很多职场新人都谈到了工作经验的问题,似乎招聘公司不给你机会,你就没办法获得必要的工作经验,其实并不一定。很多资料在网上都是可以找到的,只是看你具备不具备足够的信息收集与处理能力,而这个收集与处理信息的...

如何在三个月内获得三年的工作经验

本文转载自优米网:http://zhichang.umiwi.com/2012/0201/58839.shtml  更原始的出处似乎来自天涯:http://bbs.tianya.cn/post-no...
  • laso
  • laso
  • 2013年07月10日 10:48
  • 748

如何在三个月内获得三年的工作经验

很多职场新人都谈到了工作经验的问题,似乎招聘公司不给你机会,你就没办法获得必要的工作经验,其实并不一定。很多资料在网上都是可以找到的,只是看你具备不具备足够的信息收集与处理能力,而这个收集与处理信息的...

如何在三个月内创立一家估值200亿的游戏公司?

成立三个月的公司,估值200亿 =================== 很长一段时间,游戏公司一直是土豪的代名词,据说某游戏公司给一位主策的年终奖是一套价值千万的房子(真实案例),有越来越...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:sql: 生日三个月内有效
举报原因:
原因补充:

(最多只允许输入30个字)