SQL Server 计算年龄函数
SQL Server 计算年龄函数
- 需要处理的问题
- 实现思路
- 先将int类型转换成datetime
- 创建sqlserver函数
- 创建视图
需要处理的问题
在实际开发过程中,我们经常会遇到动态计算人员年龄的情况,其实如果单纯的计算年龄,其实在应用程序或者sql语句里面处理一下就好了,但是如果需要根据年龄进行筛选并且数据要求分页,这个问题就变的复杂起来,为了已最快的速度解决这个问题,我们就采用创建数据库函数的方式,并且结合表我们和函数结合创建视图,来快速解决相应的需求,解决方案有很多,也许我这种不是性能最优的,我只介绍快速处理问题的方案!我们的数据存储类型也不是datetime类型而是Int类型,所以再处理问题之前我们还需要经过一系列的转换将int类型转换成datetime类型!存取类型如下
-- 20200602000000
实现思路
先将int类型转换成datetime
CONVERT(datetime,CONVERT(varchar(10),CAST(SUBSTRING(CAST(出生年月 AS varchar),0,9) AS datetime),120))
创建sqlserver函数
IF EXISTS(SELECT 1 FROM sysobjects WHERE [name] = 'GetAge')DROP FUNCTION dbo.GetAgegoCREATE FUNCTION dbo.GetAge(@birthday DATETIME)RETURNS INTASBEGINIF(@birthday IS NOT NULL AND ISDATE(@birthday) = 1)BEGINDECLARE @age INT , @y INT , @m INT , @d INT , @now DATETIMESET @now = GETDATE()SET @y = DATEPART(YEAR,@now) - DATEPART(YEAR,@birthday)SET @m = DATEPART(MONTH,@now) - DATEPART(MONTH,@birthday)SET @d = DATEPART(DAY,@now) - DATEPART(DAY,@birthday)IF(@m = 0 AND @d = 0)BEGINSET @age = @yENDELSEBEGINIF @m > 0 OR (@m = 0 AND @d > 0)SET @age = @yELSESET @age = @y - 1ENDIF @age < 0 SET @age = 0ENDELSEBEGINSET @age = NULLENDRETURN @ageEND
创建视图
CREATE VIEW [dbo].[View_RC_PersonnelManage]
AS
SELECT a.*, dbo.GetAge(CONVERT(datetime, CONVERT(varchar(10), CAST(SUBSTRING(CAST(出生年月 AS varchar), 0, 9) AS datetime), 120))) AS 年龄
FROM dbo.人员信息表 AS aGO
SQL Server 计算年龄函数相关推荐
- SQL Server 2005 MD5函数
原文:SQL Server 2005 MD5函数 在SQL Server 2005下自带的函数HashBytes() ,此函数是微软在SQL Server 2005中提供的,可以用来计算一个字符串的M ...
- SQL Server中自定义函数和游标应用的经典案例
2019独角兽企业重金招聘Python工程师标准>>> SQL Server中自定义函数和游标应用的经典案例 转载于:https://my.oschina.net/zhddzr/bl ...
- Sql Server 2005 ROW_NUMBER 函数实现分页
过去用SQL Server 2000分页的,大多都用到了临时表.SQL Server 2005 ROW_NUMBER 函数支持分页,性能据说也非常不错. Paging Records Using SQ ...
- php server自定义函数,php:SQL Server用户自定义的函数种类详解
关于SQL Server用户自定义的函数,有标量函数.表值函数(内联表值函数.多语句表值函数)两种. 题外话,可能有部分朋友不知道SQL Serve用户自定义的函数应该是写在哪里,这里简单提示一下,在 ...
- oracle的date_add,SQL Server 中add函数到 oracle date add的操作
SQL Server 中add函数到 oracle date add的操作 oracle date add minutes How does one add a day/hour/minute/sec ...
- sql server中datename函数的使用
DATENAME(param,date); 参数说明 1.param是指定要返回日期部分的参数 日期部分 缩写 year yy, yyyy quarter qq, q month mm, m d ...
- SQL Server中替换函数stuff、replace的使用
原文链接:SQL Server中替换函数STUFF.replace的使用 STUFF ( character_expression , start , length ,character_expres ...
- Oracle中有dateadd吗,SQL Server 中add函数到 oracle date add的操作
SQL Server 中add函数到 oracle date add的操作 oracle date add minutes How does one add a day/hour/minute/sec ...
- SQL Server中COALESCE函数的用法
在SQL Server中COALESCE函数,会返回其参数中第一个不为NULL的参数,效果如下: SELECT COALESCE(NULL,NULL,N'A',NULL,NULL) 结果: SELEC ...
- SQL Server 分隔字符串函数实现
SQL Server 分隔字符串函数实现 在SQL Server中有时候也会遇到字符串进行分隔的需求.平时工作中常常遇到这样的需求,例如:人员数据表和人员爱好数据表,一条人员记录可以多多人员爱好记录, ...
最新文章
- python画二维散点图-python3怎样画二维点图
- 关于《资产负债表》中未分配利润项目的填列
- 最小生成树与最短路径的区别以及实现方法
- ABAP enablement in Sublime Text
- crypto在web的使用
- 一入python深似海--正則表達式
- 不加好友实现QQ在线代码状态临时会话
- fpga基础入门知识
- 怎么设置creative cloud的应用禁止自动更新
- 电机功率与转矩/扭矩的关系
- AI 人工智能学习之需要具备的基础知识
- canvas实现星星闪烁特效
- Ubuntu下Rhythmbox乱码的解决办法
- 时序分析 19 VAR(Vector Autoregression) 向量自回归
- 深度学习平台——Paddle核心框架介绍
- 戴尔研发即时运行的桌面虚拟化系统
- 大道至简(读后感)第一章 编程的精义
- 顶级程序员的成长之路2
- 浅谈Spring框架AOP概念
- 个人对latch的一些个理解