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中執行的,你們能夠根據我提供的思路,嘗試着在不一樣的數據庫中去實現獲取用戶的年齡信息。也但願看到這篇文章,認爲有更好的處理辦法的程序猿們,跟我交流下。數據

相關文章
相關標籤/搜索