tft每日頭條

 > 生活

 > oracle根據出生日期算年齡

oracle根據出生日期算年齡

生活 更新时间:2025-02-08 00:42:52

oracle根據出生日期算年齡?最近我在使用Oracle時,碰到根據身份證号碼來獲取當前的年齡,用其他自帶函數拼接得出結果,不是很方便然後發現數據庫本身沒有這個函數,然後我自己嘗試寫了一個函數,就是關于獲取年齡的,僅供各位交流學習:,今天小編就來說說關于oracle根據出生日期算年齡?下面更多詳細答案一起來看看吧!

oracle根據出生日期算年齡(Oracle根據身份證号碼獲取年齡的函數)1

oracle根據出生日期算年齡

最近我在使用Oracle時,碰到根據身份證号碼來獲取當前的年齡,用其他自帶函數拼接得出結果,不是很方便。然後發現數據庫本身沒有這個函數,然後我自己嘗試寫了一個函數,就是關于獲取年齡的,僅供各位交流學習:

create or replace function FUNC_COMPARE_SFZHM( sfzhm in varchar2) --輸入身份證号碼 return number /* 函數說明,返回值0為小于18歲;值為1是大于75歲;其他情況是返回值為2 在這個函數裡用到了trunc(months_between()) 然後就是将身份證号碼裡的年月日組合成'yyyy-mm-dd'格式,但是在SQL裡拼接用的是"||",而不是" ",這個值得注意 */ is begin if Trunc(MONTHS_BETWEEN(to_date(to_char(sysdate, 'yyyy-MM-dd'),'yyyy-MM-dd'),to_date(substr(sfzhm,7,4)||'-'||substr(sfzhm,11,2)||'-'||substr(sfzhm,13,2), 'yyyy-MM-dd')) / 12) < 18 then return 0; elsif Trunc(MONTHS_BETWEEN(to_date(to_char(sysdate, 'yyyy-MM-dd'),'yyyy-MM-dd'),to_date(substr(sfzhm,7,4)||'-'||substr(sfzhm,11,2)||'-'||substr(sfzhm,13,2), 'yyyy-MM-dd')) / 12) >75 then return 1; else return 2; end if; end;

下面是函數調用的SQL語句:

select func_compare_sfzhm('31010320000314XXXX') from dual;//這個地方是舉個例子,所以後面四位我用X替代

,

更多精彩资讯请关注tft每日頭條,我们将持续为您更新最新资讯!

查看全部

相关生活资讯推荐

热门生活资讯推荐

网友关注

Copyright 2023-2025 - www.tftnews.com All Rights Reserved