您的位置:首页 > 数据库

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

2016-06-02 09:57 417 查看
摘要: 出生年月转换成对应的年龄

今天有处理一个根据民警的出生年月信息来推算出他的年龄的需求,目前我的所有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='民警编号'

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

由于是在PGSQL中执行的,大家可以根据我提供的思路,尝试着在不同的数据库中去实现获取用户的年龄信息。也希望看到这篇文章,认为有更好的处理办法的程序猿们,跟我交流下。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: