sql:日期操作注意的,如果以字符串转日期时的函数,因为数据量大,会出问题
2014-07-17 15:35
483 查看
---1.以日期字符操作转换日期 如果是VIP1生日不对,可以以上传的数据日期为生日 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(80),@total decimal,@vipno nvarchar(10),@now datetime declare @smonth varchar(2),@sday varchar(2) set @vipno='174030' set @now=getdate() select @birthday=birthday from vip1 where vipno=@vipno and birthday is not null if isdate(@birthday)=0 or @birthday='1900-01-01' begin select @birthday=VipBirthdayDate from VipBirthdayAward where VipBirthdayNo=@vipno end 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 @smonth=cast(@month as varchar(2)) select @smonth set @sday=cast(@day as varchar(2)) if len(@smonth)<2 begin set @smonth='0'+@smonth select @smonth end if len(@sday)<2 begin set @sday='0'+@sday end set @str=cast(@year as varchar(4))+'/'+@smonth+'/'+@sday+' 00:00:00' set @NowBirthday=convert(datetime,@str) -----cast(@str as datetime) if isdate(@NowBirthday)=0 begin select @NowBirthday='2014/01/01 00:00:00' end select @NowBirthday end GO ---2 时间加减操作 SELECT DATEADD(yy, DATEDIFF(yy,0,getdate()), 0) 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(80),@total decimal,@vipno nvarchar(10),@now datetime,@setyear datetime declare @smonth varchar(2),@sday varchar(2) set @vipno='174030' set @now=getdate() set @setyear=@now select @birthday=birthday from vip1 where vipno=@vipno and birthday is not null if isdate(@birthday)=0 or @birthday='1900-01-01' begin select @birthday=VipBirthdayDate from VipBirthdayAward where VipBirthdayNo=@vipno end set @year=Year(@now) if month(@now)=1 and month(@birthday)=12 begin set @year=@year-1 set @setyear=DATEDIFF(year,-1,@now) select @setyear end if month(@now)=1 and month(@birthday)=11 begin set @year=@year-1 set @setyear=DATEDIFF(year,-1,@now) select @setyear end if month(@now)=2 and month(@birthday)=12 begin set @year=@year-1 set @setyear=DATEDIFF(year,-1,@now) select @setyear end select @birthday as 'birthday' set @month=month(@birthday) select @month set @setyear=DATEADD(year, DATEDIFF(year,0,@setyear), 0) set @setyear=Dateadd(month,@month-1,@setyear) select @setyear set @day=day(@birthday) set @setyear=Dateadd(day,@day-1,@setyear) select @NowBirthday=@setyear if isdate(@NowBirthday)=0 begin select @NowBirthday=DATEADD(yy, DATEDIFF(yy,0,getdate()), 0) end select @NowBirthday end GO
相关文章推荐
- Oracle数据库对表数据的基本操作和Oracle字符串、数值、日期、空值操作及它们相对应的函数操作
- SQL自定义函数实现字符串截取转化为整型(主要用于对批量数据的操作)
- SQL Tips:大数据量下的数据库日期操作问题
- Sql字符串操作函数
- SQL转换日期字段的问题——CONVERT转化函数的用法
- SQL 日期操作函数
- 解决JDBC操作数据库日期类型数据时无法精确到秒的问题
- SQL 中操作日期的几个函数
- Sql字符串操作函数 转
- javascript 操作日期 测试(注意浏览器兼容问题)
- com.microsoft.sqlserver.jdbc.SQLServerException 将截断字符串或二进制数据问题
- MySQL存储过程常用的函数(字符串类型操作,数学类,日期时间类)
- 问题集锦07:使用T-SQL导入数据时报错“将截断字符串或二进制数据”
- PL/SQL自定义:函数检查日期字符串是否合法
- javascript 操作日期 测试(注意浏览器兼容问题)
- OLEDB方式操作规则EXCEL的字符串的完整写法(解决标题行和列数据类型不一致的问题)
- SQL数据的基本操作(时间和日期)
- SQL里利用自定义函数Group By 数据得到字符串
- SQL数据的基本操作(时间和日期)
- SQL 常用字符串操作函数 分割 合并 取值