SQL中将用户的出生年月转换成对应的年龄

今天有处理一个根据民警的出生年月信息来推算出他的年龄的需求,目前个人全部SQL操做都是在PGSQL中执行的,至于SQL是否适用其余的数据库没法进行保证,但思路基本上时这样处理,但愿你们能够尝试或在我文章中评论。数据库

首先第一种思路是利用民警的出生日期和当前的时间进行相减,得出全部的时间,此时的时间表示是天数,而后除以365,获得年份和月份等信息,因为我在处理SQL时候没有将这种SQL代码保留,就只说思路吧,你们能够尝试。函数

下面说说第二种思路,首先将民警的出生日期转换成年月日的形式,此时用到的函数是to_char,将时间格式化成字符串的形式,下一步是用to_timestamp将字符串转化成时间格式,而后使用age函数时,若是是默认的和当前系统时间进行比较,能够不用添加now()函数,用age函数能够将计算出对应的年月日,此时咱们只是关注年份,因此要用到EXTRACT函数来截取结果中的年份信息,最后将获得的结果重命名,就能够获得咱们想要的结果了。字符串

具体的SQL语句以下程序

SELECT t1.policenum,t1.realname,CASE WHEN t1.sex=1 THEN '男' ELSE '女' END sex,to_char(t1.birthday,'yyyy-MM-dd') birthday,EXTRACT(YEAR FROM age(to_timestamp(to_char(t1.birthday,'yyyy-MM-dd'),'yyyy-MM-dd'))) age,t2.departmentname FROM users t1 LEFT JOIN department t2 ON t1.departmentid=t2.departmentid  WHERE t1.policenum='民警编号'im

上面的SQL中age字段就是我要实现的将出生日期转换成年龄的功能。命名

因为是在PGSQL中执行的,你们能够根据我提供的思路,尝试着在不一样的数据库中去实现获取用户的年龄信息。也但愿看到这篇文章,认为有更好的处理办法的程序猿们,跟我交流下。数据

相关文章
相关标签/搜索