---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. 使用单个httpclient实例请求数据。

    做J2EE的都知道httpclient这个工具,Android也自带这个工具,不过和J2EE上的不一样,可能是google在添加的时候,自己修改了一部分代码. 在J2EE中可以使用如下代码,在多线程的 ...

  2. php获取随机字符串的几种方法

    方法一:shuffle函数(打乱数组)和mt_rand函数(生成随机数,比rand速度快四倍) /** * 获得随机字符串 * @param $len 需要的长度 * @param $special ...

  3. 吴裕雄 python 机器学习——K均值聚类KMeans模型

    import numpy as np import matplotlib.pyplot as plt from sklearn import cluster from sklearn.metrics ...

  4. thinkphp5无限极分类

    public function priTree() { $data = $this->select(); return $this->_reSort($data); } // 递归对有的分 ...

  5. chromedriver for mac

  6. PIE SDK 文章目录索引

    1.PIE SDK介绍 1.1.  PIE软件介绍 1.2.  PIE SDK介绍 1.3.  PIE支持项目介绍 1.4.  PIE.NET-SDK插件式二次开发介绍 1.5.  PIE.NET-S ...

  7. git常用安装包,指令

    babel-polufill  -es6  API转义 npm install --save @babel/polyfill babel-runtime -es语法转义 npm install --s ...

  8. Vue + iview框架,搭建项目遇到的相关问题记录 - 国际化router.js不能实现

    例子展示: 概述: 最近在使用vue + iview框架进行web开发,并且有一个需求,需要实现web端的国际化,在完成相关配置文件后,发现router.js 中无法配置,并且会出现异常,在经过百度找 ...

  9. C# DataTable 用法

    1.创建DataTable DataTable dataTable = new DataTable(); //创建一个空表 2.创建DataRow DataRow row = dataTable.Ne ...

  10. elastic 常用操作

    前缀搜索