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 一.数据库结构的设计 如果不能设计一个合理的数据库模型,不仅会增加客户端和服务器段程序的 ...
随机推荐
- 关于OC中的block自己的一些理解(二)
一.block延伸:页面间反向传值 1)first页面的代码 - (void)viewDidLoad { [super viewDidLoad]; [self setupBtn]; self.view ...
- 方法引用(Method reference)和invokedynamic指令详细分析
方法引用(Method reference)和invokedynamic指令详细分析 invokedynamic是jvm指令集里面最复杂的一条.本文将详细分析invokedynamic指令是如何实现方 ...
- python学习,day3:示例,进度条
# coding=utf-8 # Author: RyAn Bi import sys,time for i in range(50): sys.stdout.write("#") ...
- [转] Jenkins pipeline 中获取 exit code, stdout and stderr 返回值和输出
[From] https://issues.jenkins-ci.org/browse/JENKINS-44930 其做法是,把stdout定向到一个文件,sh 配置 returnStatus: tr ...
- [转] vagrant学习笔记 - provision
[From] https://blog.csdn.net/54powerman/article/details/50684844 从字面上来看,provision是准备,实现的功能是在原生镜像的基础 ...
- 剑指offer——面试题16:数值的整数次方
// 面试题16:数值的整数次方 // 题目:实现函数double Power(double base, int exponent),求base的exponent // 次方.不得使用库函数,同时不需 ...
- js map()初步学习
//array.map(callback,thisObject?),callback需要有return值 //map:'映射' 被映射成新的数组 eg1: let data = [3,4,2]; l ...
- JDK,JRE,JVM的基础理解
1.JVM -- java virtual machine JVM就是我们常说的java虚拟机,它是整个java实现跨平台的 最核心的部分,所有的java程序会首先被编译为.class的类文件,这种类 ...
- [JAVA]Apache FTPClient操作“卡死”问题的分析和解决
最近在和一个第三方的合作中不得已需要使用FTP文件接口.由于FTP Server由对方提供,而且双方背后各自的网络环境都很不单纯等等原因,造成测试环境无法模拟实际情况.测试环境中程序一切正常,但是在部 ...
- Git学习系列之经典的Git开发过程
前言 Git是一款免费.开源的分布式版本控制系统,用于敏捷高效地处理任何或小或大的项目. 分布式相比于集中式的最大区别在于开发者可以提交到本地,每个开发者通过克隆(git clone),在本地机器上 ...