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 计算年龄函数相关推荐

  1. SQL Server 2005 MD5函数

    原文:SQL Server 2005 MD5函数 在SQL Server 2005下自带的函数HashBytes() ,此函数是微软在SQL Server 2005中提供的,可以用来计算一个字符串的M ...

  2. SQL Server中自定义函数和游标应用的经典案例

    2019独角兽企业重金招聘Python工程师标准>>> SQL Server中自定义函数和游标应用的经典案例 转载于:https://my.oschina.net/zhddzr/bl ...

  3. Sql Server 2005 ROW_NUMBER 函数实现分页

    过去用SQL Server 2000分页的,大多都用到了临时表.SQL Server 2005 ROW_NUMBER 函数支持分页,性能据说也非常不错. Paging Records Using SQ ...

  4. php server自定义函数,php:SQL Server用户自定义的函数种类详解

    关于SQL Server用户自定义的函数,有标量函数.表值函数(内联表值函数.多语句表值函数)两种. 题外话,可能有部分朋友不知道SQL Serve用户自定义的函数应该是写在哪里,这里简单提示一下,在 ...

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

  6. sql server中datename函数的使用

     DATENAME(param,date); 参数说明 1.param是指定要返回日期部分的参数 日期部分 缩写 year yy, yyyy quarter qq, q month mm, m d ...

  7. SQL Server中替换函数stuff、replace的使用

    原文链接:SQL Server中替换函数STUFF.replace的使用 STUFF ( character_expression , start , length ,character_expres ...

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

  9. SQL Server中COALESCE函数的用法

    在SQL Server中COALESCE函数,会返回其参数中第一个不为NULL的参数,效果如下: SELECT COALESCE(NULL,NULL,N'A',NULL,NULL) 结果: SELEC ...

  10. SQL Server 分隔字符串函数实现

    SQL Server 分隔字符串函数实现 在SQL Server中有时候也会遇到字符串进行分隔的需求.平时工作中常常遇到这样的需求,例如:人员数据表和人员爱好数据表,一条人员记录可以多多人员爱好记录, ...

最新文章

  1. python画二维散点图-python3怎样画二维点图
  2. 关于《资产负债表》中未分配利润项目的填列
  3. 最小生成树与最短路径的区别以及实现方法
  4. ABAP enablement in Sublime Text
  5. crypto在web的使用
  6. 一入python深似海--正則表達式
  7. 不加好友实现QQ在线代码状态临时会话
  8. fpga基础入门知识
  9. 怎么设置creative cloud的应用禁止自动更新
  10. 电机功率与转矩/扭矩的关系
  11. AI 人工智能学习之需要具备的基础知识
  12. canvas实现星星闪烁特效
  13. Ubuntu下Rhythmbox乱码的解决办法
  14. 时序分析 19 VAR(Vector Autoregression) 向量自回归
  15. 深度学习平台——Paddle核心框架介绍
  16. 戴尔研发即时运行的桌面虚拟化系统
  17. 大道至简(读后感)第一章 编程的精义
  18. 顶级程序员的成长之路2
  19. 浅谈Spring框架AOP概念
  20. 个人对latch的一些个理解

热门文章

  1. MDK(keil5)的下载及安装教程
  2. window7磁盘分区
  3. linux查看进程占用连接数,Linux命令排查线上问题常用的几个
  4. RGB888转换为RGB565格式
  5. PCA9685与 NXP1768单片机iic通信,扩展PWM端口。已调试成功。
  6. php报修小程序,微信小程序报修管理系统
  7. python web ui框架_推荐几个精致的web UI框架
  8. esxi 部署模板_vSphere通过模板批量部署虚拟机
  9. 抖音有网页版吗?抖音网页版,抖音电脑版
  10. 计算机计费管理系统,中央空调时间型计费管理系统-中央空调计费系统