第一种:

一张人员信息表里有一人生日(Birthday)列,跟据这个列,算出该人员的年龄

datediff(year,birthday,getdate())

例:birthday = '2003-3-8'

getDate()= '2008-7-7'

结果为:5

这样结果是会返回该人员的大概年龄,但不精确.不会精确到月或日.

按照上面测试的日期,该人员的实际年龄应该还不满5岁。在需要精确年龄的时候,就会有错.

第二种:

  FLOOR(datediff(DY,birthday,getdate())/365.25)

FLOOR函数:

FLOOR(expr) 返回小于或等于expr的最大整数.FLOOR(1.1)返回1,FLOOR(-1.1)返回-2,FLOOR(1)返回1

这样就可以精确算出,该人员当前实际年龄了.

测试:

birthday = '2000-7-8'

getdate()= '2007-7-7'

算出结果为:6

Oracle中,要获得日期中的年份,例如把sysdate中的年份取出来。

一种常用的方法是:to_number(to_char(sysdate,'yyyy'))

还有一种更好的方法,那就是使用oracle提供的Extract函数,使用方法是:

extract(year from sysdate) ,此方法获得的结果是数值型的 ,这种方法省掉了类型转换,更加简洁。

相应的,要取得月份或日,可以用extract (month from sysdate) 和extract (day from sysdate)

SQL根据出生日期精确计算年龄、获取日期中的年份、月份的更多相关文章

  1. SQL 根据日期精确计算年龄

    SQL 根据日期精确计算年龄 第一种: 一张人员信息表里有一人生日(Birthday)列,跟据这个列,算出该人员的年龄 datediff(year,birthday,getdate()) 例:birt ...

  2. java计算两个日期之间相隔的月份(向下取整)

    最近需求里面有个需要计算两个日期之间相隔的月份,写起来还挺繁琐,需要将各种情况都要考虑到,写了一个作为以后自己的工具吧. //获取哪一天 public static int getDay(Date d ...

  3. 编程乐趣:C#获取日期所在周、月份第一和最后一天

    原文:编程乐趣:C#获取日期所在周.月份第一和最后一天 写了个小功能,需要用到以周为时间段,于是写了个获取周第一和最后一天的方法,获取月份的第一和最后一天就比较简单了.代码如下: public cla ...

  4. JS[获取两个日期中所有的月份]

    //------[获取两个日期中所有的月份中] function getMonthBetween(start,end){ var result = []; var s = start.split(&q ...

  5. 在Excel中根据某一个单元格的出生日期自动精确计算年龄

    =IF(MONTH(NOW())<MONTH(G4),INT(YEAR(NOW())-YEAR(G4))-1,IF(MONTH(NOW())>MONTH(G4),YEAR(NOW())-Y ...

  6. Java 根据年月日精确计算年龄

    import java.text.SimpleDateFormat; import java.util.Calendar; import java.util.Date; /** * Created b ...

  7. 依据出生日期Date 计算年龄

    依据出生日期计算年龄 public class DateGetAge { public static int getAge(Date birthDay) throws Exception { Cale ...

  8. sql - 获取日期中的年

    使用 YEAR函数, 如 --day为rain表中的字段. select YEAR(day) from t_rain

  9. sql 根据身份证号码计算年龄

    ,), GETDATE()) / 365.25) from ConstructionInfo

随机推荐

  1. servlet里的forward和redirect的区别

    forward方式:request.getRequestDispatcher("/somePage.jsp").forwardrequest, response);     red ...

  2. Hadoop2 使用 YARN 运行 MapReduce 的过程源码分析

    Hadoop 使用 YARN 运行 MapReduce 的过程如下图所示: 总共分为11步. 这里以 WordCount 为例, 我们在客户端终端提交作业: # 把本地的 /home/hadoop/t ...

  3. 18.Consent 实现思路介绍

    讲一下实现Consent的逻辑 interaction它会根据returnUrl 输入用户名和密码后是在登陆的Controller,登陆完之后呢,会有一个returnUrl returnurl会被带到 ...

  4. SQL——登陆触发器实现限制IP

    [转载]原文地址:https://www.baidu.com/link?url=N-SM28ge21TTYky79dYk8otsjKgYCIpy-0RBSvMV25f8KSOsYczhxTOCzeNZ ...

  5. JAVA基础--JAVA API集合框架16

    一.Map集合 1. map集合介绍 Collection集合的特点: 集合中存储的所有元素都是单一元素,元素和元素之间没有必然的关系.因此我们把Collection集合也称为单列集合. Map集合: ...

  6. 用spin和edit控件来用spin控制edit里面小数的增减

    1.响应SPIN的消息,就是点SPIN的上键头和下键头的消息,在这个消息里改变值是以0.1步进量增减.2.使用UpdateData(FALSE)来更新EDIT的关联的double型的变量. 创建步骤 ...

  7. 解决overflow: auto在Ios中滑动不流畅

    [bug]—— H5页面在 ios 端滑动不流畅的问题   IOS系统的惯性滑动效果非常6,但是当我们对div加overflow-y:auto;后是不会出这个效果的,滑动的时候会感觉很生涩.怎么办? ...

  8. 阿里云物联网 .NET Core 客户端 | CZGL.AliIoTClient:5. 设置设备属性

    文档目录: 说明 1. 连接阿里云物联网 2. IoT 客户端 3. 订阅Topic与响应Topic 4. 设备上报属性 4.1 上报位置信息 5. 设置设备属性 6. 设备事件上报 7. 服务调用 ...

  9. linux模拟http请求命令

    Http请求指的是客户端向服务器的请求消息,Http请求主要分为get或post两种,在Linux系统下可以用curl和wget命令来模拟Http的请求.下面就来介绍一下Linux系统如何模拟Http ...

  10. mybits like查询写法

    1.mysql :LIKE CONCAT('%',#{empname},'%' ) 或者 LIKE CONCAT('%',‘${empname}’,'%' ) 2.oracle:LIKE '%'||# ...