---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

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

  1. java 日期格式化-- SimpleDateFormat 的使用。字符串转日期,日期转字符串

    日期和时间格式由 日期和时间模式字符串 指定.在 日期和时间模式字符串 中,未加引号的字母 'A' 到 'Z' 和 'a' 到 'z' 被解释为模式字母,用来表示日期或时间字符串元素.文本可以使用单引 ...

  2. sql 语句操作,修改字段中字符串的一部分

    update 表名 set 字段=replace(字段,‘替换的部分’,‘替换后的字符串’): update 表名 set A=replace( A, '海淀', '朝阳') where A like ...

  3. Microsoft SQL Server 数据量大 导入导出 问题汇总

    问题一: 今天拿到一份有近百万条数据的Excel要导到数据库里面,我先在本地(2014)用自带Excel,然后生成脚本文件去服务器(2008)上执行:文件SQL打开不了. 解决方法: 用自带的sqlc ...

  4. PHP处理大数据量老用户头像更新的操作--解决数据量大超时的问题

    /** * @title 老用户头像更新--每3秒调用一次接口,每次更新10条数据 * @example user/createHeadPicForOldUser? * @method GET * @ ...

  5. Java中获取指定日为星期几及其他日期操作

    摘自:http://blog.csdn.net/cselmu9/article/details/8625530#t6 在开发中经常会使用到一些日期方面的操作,下面例子展示几个常用的操作. 1.取得指定 ...

  6. flex4 日期类型字符串转日期类型(string转Date)(转)

    mysql数据库中存储的日期类型通过PHP返回到flex端为字符串类型,这样在flex中进行处理时就必须要将字符串转化为Date类型.如果仅仅是 "年/月/日" 的组合,而没有涉及 ...

  7. sql 数据量高并发的数据库优化(转)

    Mysql 大数据量高并发的数据库优化 一.数据库结构的设计 如果不能设计一个合理的数据库模型,不仅会增加客户端和服务器段程序的编程和维护的难度,而且将会影响系统实际运行的性能.所以,在一个系统开始实 ...

  8. sql语句百万数据量优化方案

    一:理解sql执行顺序 在sql中,第一个被执行的是from语句,每一个步骤都会产生一个虚拟表,该表供下一个步骤查询时调用,比如语句:select top 10 column1,colum2,max( ...

  9. 大数据量数据库设计与优化方案(SQL优化)

    转自:http://blog.sina.com.cn/s/blog_6c0541d50102wxen.html 一.数据库结构的设计 如果不能设计一个合理的数据库模型,不仅会增加客户端和服务器段程序的 ...

随机推荐

  1. Python实现——二层BP神经网络

    2019/4/23更新 下文中的正确率极高是建立在仅有50组训练数据的基础上的,十分不可靠.建议使用提供的另一个生成训练集的generate_all函数,能产生所有可能结果,更加可靠. 2019/4/ ...

  2. Using Request Headers for Metadata Address

    问题描述 我将一个在本地调试正常的service部署到服务器后遇到了添加服务引用失败的问题.在把配置文件中基址使用的localhost替换成服务器的ip地址后问题得到了解决.但我感觉这并不是一个因为粗 ...

  3. mask layer的遮罩层

    1. layer层 mask 遮罩效果 //渐变层 CAGradientLayer *gradientLayer = [CAGradientLayer layer]; gradientLayer.fr ...

  4. Comparable比较器和Comparator比较器

    1.Comparable比较器 在Arrays类中存在sort()排序方法,此方法可以直接对对象数组进行排序. public static void sort(Object[] a 根据元素的自然顺序 ...

  5. FileZilla上傳報錯:421 There are too many connections from your internet address

    起因:2019年01月27日晚九點左右,想要將一個50MB+的文件夾上傳到阿里雲的虛擬主機上,使用FTP 工具FileZilla,出現了上傳一段時間後提示421 There are too many ...

  6. Python编程中报过的错

    一.TypeError: not all arguments converted during string formatting def max(*args): print('max2:%s' % ...

  7. win10操作系统系统,小米路由器,小米3 的问题

    注意 , 置顶 单独一篇 : { win10  局域网共享 小米路由器,操作盘太卡 } 开发中用专业版 , 别用家庭版 比如有远程桌面程序 和 HV 虚拟机 查看激活信息 和 是不是永久激活 参考 h ...

  8. Linux 开机、重启和用户登录注销、用户管理、用户组

    l 关机&重启命令   基本介绍: shutdown –h now 立该进行关机 shudown -h 1 "hello, 1 分钟后会关机了" shutdown –r n ...

  9. CSAPP阅读笔记-汇编语言初探(控制类指令)-来自第三章3.6的笔记-P135-P163

    1.正溢出与负溢出: 首先,一个正数与一个负数相加,不可能溢出,因为结果的绝对值一定小于两个加数的绝对值,既然两个加数能合理表示出来,结果一定也能合理表示出来. 其次,正溢出是由于两个很大的正数相加, ...

  10. C#中动态调用DLL动态链接库(转)

    本来是想实现控制台程序运行时自动全屏,但是只找到VC下的实现方法(http://www.vckbase.com/bbs/prime/viewprime.asp?id=347). 其中要使用两个未公开的 ...