sql:日期操作注意的,如果以字符串转日期时的函数,因为数据量大,会出问题

王朝学院·作者佚名  2016-05-26
窄屏简体版  字體: 小  |  中  |  大  |  超大  

sql:日期操作注意的,如果以字符串转日期时的函数,因为数据量大,会出问题---1.以日期字符操作转换日期 如果是Vip1生日不对,可以以上传的数据日期为生日begindeclare @NowBirthday datetime, @birthday datetime,@stat datetime,@end datetime,@statbirthday datetime,@endbirthday datetime,@thirdbirthday datetime,@firthbirthday datetime, @year int,@month int , @day int,@str varchar(80),@total decimal,@vipno nvarchar(10),@now datetimedeclare @smonth varchar(2),@sday varchar(2)set @vipno='174030'set @now=getdate()select @birthday=birthday from vip1 where vipno=@vipno and birthday is not nullif isdate(@birthday)=0 or @birthday='1900-01-01'beginselect @birthday=VipBirthdayDate from VipBirthdayAward where VipBirthdayNo=@vipnoendset @year=Year(@now)if month(@now)=1 and month(@birthday)=12begin set @year=@year-1endif month(@now)=1 and month(@birthday)=11begin set @year=@year-1endif month(@now)=2 and month(@birthday)=12 begin set @year=@year-1endset @month=month(@birthday)set @day=day(@birthday)set @smonth=cast(@month as varchar(2))select @smonthset @sday=cast(@day as varchar(2))if len(@smonth)<2begin set @smonth='0'+@smonth select @smonthendif len(@sday)<2begin set @sday='0'+@sdayend set @str=cast(@year as varchar(4))+'/'+@smonth+'/'+@sday+' 00:00:00'set @NowBirthday=convert(datetime,@str) -----cast(@str as datetime)if isdate(@NowBirthday)=0begin select @NowBirthday='2014/01/01 00:00:00'endselect @NowBirthdayendGO---2 时间加减操作SELECT DATEADD(yy, DATEDIFF(yy,0,getdate()), 0) begindeclare @NowBirthday datetime, @birthday datetime,@stat datetime,@end datetime,@statbirthday datetime,@endbirthday datetime,@thirdbirthday datetime,@firthbirthday datetime, @year int,@month int , @day int,@str varchar(80),@total decimal,@vipno nvarchar(10),@now datetime,@setyear datetimedeclare @smonth varchar(2),@sday varchar(2)set @vipno='174030'set @now=getdate()set @setyear=@nowselect @birthday=birthday from vip1 where vipno=@vipno and birthday is not nullif isdate(@birthday)=0 or @birthday='1900-01-01'beginselect @birthday=VipBirthdayDate from VipBirthdayAward where VipBirthdayNo=@vipnoendset @year=Year(@now)if month(@now)=1 and month(@birthday)=12begin set @year=@year-1 set @setyear=DATEDIFF(year,-1,@now) select @setyearendif month(@now)=1 and month(@birthday)=11begin set @year=@year-1 set @setyear=DATEDIFF(year,-1,@now) select @setyearendif month(@now)=2 and month(@birthday)=12 begin set @year=@year-1 set @setyear=DATEDIFF(year,-1,@now) select @setyearendselect @birthday as 'birthday'set @month=month(@birthday)select @monthset @setyear=DATEADD(year, DATEDIFF(year,0,@setyear), 0)set @setyear=Dateadd(month,@month-1,@setyear)select @setyearset @day=day(@birthday)set @setyear=Dateadd(day,@day-1,@setyear)select @NowBirthday=@setyearif isdate(@NowBirthday)=0begin select @NowBirthday=DATEADD(yy, DATEDIFF(yy,0,getdate()), 0) endselect @NowBirthdayendGO

 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
 
© 2005- 王朝網路 版權所有 導航