SQL语句如何根据出生日期计算年龄

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了SQL语句如何根据出生日期计算年龄相关的知识,希望对你有一定的参考价值。

参考技术A 第一种:\\x0d\\x0a一张人员信息表里有一人生日(Birthday)列,跟据这个列,算出该人员的年龄\\x0d\\x0adatediff(year,birthday,getdate())\\x0d\\x0a例:birthday = \'2003-3-8\'\\x0d\\x0agetDate()= \'2008-7-7\'\\x0d\\x0a结果为:5\\x0d\\x0a这样结果是会返回该人员的大概年龄,但不精确.不会精确到月或日.\\x0d\\x0a按照上面测试的日期,该人员的实际年龄应该还不满5岁。在需要精确年龄的时候,就会有错.\\x0d\\x0a第二种:\\x0d\\x0aFLOOR(datediff(DY,birthday,getdate())/365.25)\\x0d\\x0aFLOOR函数:\\x0d\\x0aFLOOR(expr) 返回小于或等于expr的最大整数.FLOOR(1.1)返回1,FLOOR(-1.1)返回-2,FLOOR(1)返回1\\x0d\\x0a这样就可以精确算出,该人员当前实际年龄了.\\x0d\\x0a测试:\\x0d\\x0abirthday = \'2000-7-8\'\\x0d\\x0agetdate()= \'2007-7-7\'\\x0d\\x0a算出结果为:6\\x0d\\x0a\\x0d\\x0a在Oracle中,要获得日期中的年份,例如把sysdate中的年份取出来。\\x0d\\x0a一种常用的方法是:to_number(to_char(sysdate,\'yyyy\'))\\x0d\\x0a还有一种更好的方法,那就是使用oracle提供的Extract函数,使用方法是:\\x0d\\x0aextract(year from sysdate) ,此方法获得的结果是数值型的 ,这种方法省掉了类型转换,更加简洁。\\x0d\\x0a相应的,要取得月份或日,可以用extract (month from sysdate) 和extract (day from sysdate)

如何用SQL语句把出生日期计算年龄,比如是1984-2-16怎么算出年龄啊

语句为:SELECT FLOOR(DATEDIFF(CURRENT_DATE,'1984-2-16')/356)

常用sql对数据库操作:

    连接数据库命令: mysql -u root -p密码

    创建数据库:create database dbname;

    查看所有的数据库:show databases;

    删除数据库: drop database dbname;

    切换数据库:use dbname;


知识拓展:

MySQL是一个关系型数据库管理系统,由瑞典MySQL AB 公司开发,目前属于 Oracle 旗下产品。MySQL 是最流行的关系型数据库管理系统之一,在 WEB 应用方面,MySQL是最好的 RDBMS (Relational Database Management System,关系数据库管理系统) 应用软件。

参考技术A 可以用日期函数datediff计算出生日期与当前日期相差的年数
如datediff(year,'1984-2-16',getdate())
人活一辈子,就活一颗心,心好了,一切就都好了,心强大了,一切问题,都不是问题。

  人的心,虽然只有拳头般大小,当它强大的时候,其力量是无穷无尽的,可以战胜一切,当它脆弱的时候,特别容易受伤,容易多愁善感。

  心,是我们的根,是我们的本,我们要努力修炼自己的心,让它变得越来越强大,因为只有内心强大,方可治愈一切。

  没有强大的敌人,只有不够强大的自己

  人生,是一场自己和自己的较量,说到底,是自己与心的较量。如果你能够打开自己的内心,积极乐观的去生活,你会发现,生活并没有想象的那么糟糕。

  面对不容易的生活,我们要不断强大自己的内心,没人扶的时候,一定要靠自己站稳了,只要你站稳了,生活就无法将你撂倒。

  人活着要明白,这个世界,没有强大的敌人,只有不够强大的自己,如果你对现在的生活不满意,千万别抱怨,努力强大自己的内心,才是我们唯一的出路。

  只要你内心足够强大,人生就没有过不去的坎

  人生路上,坎坎坷坷,磕磕绊绊,如果你内心不够强大,那这些坎坎坷坷,磕磕绊绊,都会成为你人生路上,一道道过不去的坎,你会走得异常艰难。

  人生的坎,不好过,特别是心坎,最难过,过了这道坎,还有下道坎,过了这一关,还有下一关。面对这些关关坎坎,我们必须勇敢往前走,即使心里感到害怕,也要硬着头皮往前冲。

  人生没有过不去的坎,只要你勇敢,只要内心足够强大,一切都会过去的,不信,你回过头来看看,你已经跨过了多少坎坷,闯过了多少关。

  内心强大,是治愈一切的良方

  面对生活的不如意,面对情感的波折,面对工作上的糟心,你是否心烦意乱?是否焦躁不安?如果是,请一定要强大自己的内心,因为内心强大,是治愈一切的良方。

  当你的内心,变得足够强大,一切困难,皆可战胜,一切问题,皆可解决。心强则胜,心弱则败,很多时候,打败我们的,不是生活的不如意,也不是情感的波折,更不是工作上的糟心,而是我们内心的脆弱。

  真的,我从来不怕现实太残酷,就怕自己不够勇敢,我从来不怕生活太苦太难,就怕自己不够坚强。我相信,只要我们的内心,变得足够强大,人生就没有那么多鸡毛蒜皮。

  强大自己的内心,我们才能越活越好

  生活的美好,在于追求美好的生活,而美好的生活,源于一颗强大的内心,因为只有内心强大的人,才能消化掉各种不顺心,各种不如意,将阴霾驱散,让美好留在心中。

  心中有美好,生活才美好,心中有阳光,人生才芬芳。一颗阴暗的心,托不起一张灿烂的脸,一颗强大的心,可以美化生活,精彩人生,让我们越活越好。

  生活有点欺软怕硬,如果你内心很脆弱,生活就会打压你,甚至折磨你,如果你内心足够强大,生活就会奖励你,眷顾你,全世界都会对你和颜悦色。
参考技术B

计算年龄就是,计算当前时间与出生日期的年份差的过程,所以用到DATEDIFF 函数。

一、DATEDIFF 函数简介

1、函数功能:返回两个日期之间的间隔指定单位值。

2、语法:DATEDIFF ( date-part, date-expression-1, date-expression-2 )

date-part :指定要测量其间隔的日期部分,常用参数说明

date-expression-1 某一间隔的起始日期。

date-expression-2 某一间隔的结束日期。

函数返回值:从date-expression-2 值中减去 Date-expression-1,返回两个参数之间 date-parts 的值。

3、范例演示:

SELECT datediff( hh, '4:00AM', '5:50AM' )下面的语句返回 102:
SELECT datediff( mm, '1987/05/02', '1995/11/15' )下面的语句返回 0:
SELECT datediff( dd, '00:00', '23:59' )下面的语句返回 4:
SELECT datediff( dd,'1999/07/19 00:00','1999/07/23 23:59' )下面的语句返回 0:
SELECT datediff( mm, '1999/07/19', '1999/07/23' )下面的语句返回 1:
SELECT datediff( mm, '1999/07/19', '1999/08/23' )

二、通过出生日期计算年龄的实例

1、实例表格:a_test

2、SQL语句如下:

select bh,rq,
case when datediff(yy,rq,getdate()) = 0                   
then cast(datediff(mm,rq,getdate()) as char(3))  +'个月'  
else cast(datediff(yy,rq,getdate()) as char(3))  +'岁'    
end  as '年龄'                                           
from a_test;

语句解析:语句主体部分

case when datediff(yy,rq,getdate()) = 0                  
then cast(datediff(mm,rq,getdate()) as char(3))  +'个月'  
else cast(datediff(yy,rq,getdate()) as char(3))  +'岁'    
end  as '年龄'

datediff函数计算出生日期rq与系统当前时间getdate()的年份差值,如果差值大于0,就计算月份差,显示月份为年龄。

语句结果如图:  

参考技术C 可以用日期函数datediff计算出生日期与当前日期相差的年数
如datediff(year,'1984-2-16',getdate())追问

我不需要很详细的时间,按照这个写出来的不是年龄啊。还有这个要怎么写啊

追答

这只是获得两个日期之前的年数,应该就是年龄了,你要的是什麼?

追问

select datediff(year,’1984-2-16’getdate()) as '年龄' from BD_StudentInformation对不对

追答

你的出生日期不是一个字段吗?
将如下出生日期字段换成实际的字段名即可

select datediff(year,出生日期字段,getdate()) as 年龄 from BD_StudentInformation

追问

额。。。什么叫出生日期的字段啊。。。

追答

你是不是查BD_StudentInformation表中每个学生的年龄?
BD_StudentInformation中应该有一个字段是记录学生年龄的吧

追问

select datediff(year,’BD_StudentInformationyear’getdate()) as '年龄' from BD_StudentInformatio 对吧

追答

select datediff(year,BD_StudentInformationyear,getdate()) as ‘年龄’ from BD_StudentInformatio
不用加引号,且getdate()前是要加逗号分开的

本回答被提问者采纳
参考技术D ,if( substring(FROM_UNIXTIME(UNIX_TIMESTAMP('$y_date','yyyy-MM-dd'), 'yyyyMMdd'),5) >= substring(a.ZCSDAT,5) ,
substring(FROM_UNIXTIME(UNIX_TIMESTAMP('$y_date','yyyy-MM-dd'), 'yyyyMMdd'),1,4) - substring(a.ZCSDAT,1,4),
substring(FROM_UNIXTIME(UNIX_TIMESTAMP('$y_date','yyyy-MM-dd'), 'yyyyMMdd'),1,4) - substring(a.ZCSDAT,1,4)-1
) AS EMP_AGE --年龄: 跑数月日 >= 出生月日 ,年份差 ,否则年份差-1

以上是关于SQL语句如何根据出生日期计算年龄的主要内容,如果未能解决你的问题,请参考以下文章

如何用SQL语句把出生日期计算年龄,比如是1984-2-16怎么算出年龄啊

sql根据身份证计算年龄。

SQL由身份证号计算出生日期和年龄

Oracle 根据出生日期计算年龄

根据出生年份计算年龄的公式,如何根据出生日期求年龄?

SQL计算年龄