sql:日期操作注意的,如果以字符串转日期时的函数,因为数据量大,会出问题
---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:日期操作注意的,如果以字符串转日期时的函数,因为数据量大,会出问题的更多相关文章
- java 日期格式化-- SimpleDateFormat 的使用。字符串转日期,日期转字符串
日期和时间格式由 日期和时间模式字符串 指定.在 日期和时间模式字符串 中,未加引号的字母 'A' 到 'Z' 和 'a' 到 'z' 被解释为模式字母,用来表示日期或时间字符串元素.文本可以使用单引 ...
- sql 语句操作,修改字段中字符串的一部分
update 表名 set 字段=replace(字段,‘替换的部分’,‘替换后的字符串’): update 表名 set A=replace( A, '海淀', '朝阳') where A like ...
- Microsoft SQL Server 数据量大 导入导出 问题汇总
问题一: 今天拿到一份有近百万条数据的Excel要导到数据库里面,我先在本地(2014)用自带Excel,然后生成脚本文件去服务器(2008)上执行:文件SQL打开不了. 解决方法: 用自带的sqlc ...
- PHP处理大数据量老用户头像更新的操作--解决数据量大超时的问题
/** * @title 老用户头像更新--每3秒调用一次接口,每次更新10条数据 * @example user/createHeadPicForOldUser? * @method GET * @ ...
- Java中获取指定日为星期几及其他日期操作
摘自:http://blog.csdn.net/cselmu9/article/details/8625530#t6 在开发中经常会使用到一些日期方面的操作,下面例子展示几个常用的操作. 1.取得指定 ...
- flex4 日期类型字符串转日期类型(string转Date)(转)
mysql数据库中存储的日期类型通过PHP返回到flex端为字符串类型,这样在flex中进行处理时就必须要将字符串转化为Date类型.如果仅仅是 "年/月/日" 的组合,而没有涉及 ...
- sql 数据量高并发的数据库优化(转)
Mysql 大数据量高并发的数据库优化 一.数据库结构的设计 如果不能设计一个合理的数据库模型,不仅会增加客户端和服务器段程序的编程和维护的难度,而且将会影响系统实际运行的性能.所以,在一个系统开始实 ...
- sql语句百万数据量优化方案
一:理解sql执行顺序 在sql中,第一个被执行的是from语句,每一个步骤都会产生一个虚拟表,该表供下一个步骤查询时调用,比如语句:select top 10 column1,colum2,max( ...
- 大数据量数据库设计与优化方案(SQL优化)
转自:http://blog.sina.com.cn/s/blog_6c0541d50102wxen.html 一.数据库结构的设计 如果不能设计一个合理的数据库模型,不仅会增加客户端和服务器段程序的 ...
随机推荐
- dbproxy-user/pwd
dbproxy 的账号是统一的, 即连接dbproxy,连接主mysql ,连接从mysql 的账号必须一样, 为了隔离 即使用dbproxy的人感知不到mysql, 需要分离 配置文件 #dbpro ...
- 三种简单的html网页自动跳转方法
三种简单的html网页自动跳转方法,可以让你在打开一个html网页时自动跳转到其它的页面. 方法/步骤 <html> <head> <title>正在跳转< ...
- Maven 远程仓库下载慢的的解决方案
配置很简单,修改conf文件夹下的settings.xml文件,添加如下镜像配置: 我直接去设置maven目录下面的setttings文件 添加镜像站点 <mirrors> <mir ...
- python在一堆目录中寻找json文件
在一个目录下,有好几层目录,里面零零散散存放着几个json文件,我要做的是用python脚本把它们都找出来,一开始就一层一层地找,用os.listdir加上for循环,根据目录树的深度确定for循环的 ...
- Jenkins windows部署
1.安装jenkins 进入https://jenkins.io/download/,下载windows安装包,解压后运行jenkins.msi进行安装. 配置jenkins (1)打开http:// ...
- js toFixed 方法重写,兼容负数
Number.prototype.toFixed = function (s) { var that = this, changenum, index; if (this < 0) { that ...
- UML-6.2-用例-用例模型/用例/场景关系
参与者:具有某些行为的人或事物.如上一章中的收银员. |_主要参与者:收银员. |_协助参与者:程序(自动付费.帮收银员验证输入要素) |_幕后参与者:政府等(电子签章取证找公证机构) 用例:一组相关 ...
- oracle12c之四 控制PDB操作 PDBLockdown Profiles
除了IO.内存.CPU之外,还有一些限制,比如:限制在pdb中的操作命令,我们可以创建一个lockdown profile来限制对当前PDB的操作,增强某些操作的安全性. 关于PDB Lockdo ...
- Win32创建异形窗口
大家都见过在windows下各种气泡窗口.输入法窗口以及其他一些窗口,这些窗口看起来不像传统的windows窗那样,上面是标题栏,下面是窗口的客户区.这些窗口形状各异,可以是一个多边形,一幅图,甚至是 ...
- (转)Mysql数据库管理 表的维护
原文:http://t.dbdao.com/archives/mysql%E6%95%B0%E6%8D%AE%E5%BA%93%E7%AE%A1%E7%90%86-%E8%A1%A8%E7%9A%84 ...