❶ sql由身份證號計算出生日期和年齡
select datediff(day,convert(datetime,SUBSTRING (ID, 7, 4) + '-' + SUBSTRING (ID, 11, 2) + '-' + SUBSTRING (ID, 13, 2)) ,getdate())/360 from 員工信息表
❷ SQL 中身份證編碼與出生日期驗證
根據身份證號驗證出生日期:
alter table 你的表--修改表
/*添加約束 要麼刪掉你之前的生日約束 要麼把
約束開始到結束復制到你的約束里再改*/
add constraint CK_生日 check(
--約束開始
convert(datetime,replace(stuff(stuff(right (left(char之類類型的18位的身份證號,14),8),5,0,'-'),8,0,'-'),'0',''))=生日欄位
--約束結束
)
最後只要把中文替換掉就可以了
❸ 各位兄弟都來,如何在sql里利用身份證查詢出生日期
select 序號,姓名,身份證號,
case LEN(身份證號)
when 15 then convert(date, SUBSTRING(身份證號, 7, 6), 12) /*15位身份證號: 7-12位為yymmdd */
when 18 then convert(date, SUBSTRING(身份證號, 7, 8), 112) /*18位身份證號: 7-14位為yyyymmdd */
else NULL
end as 出生日期,
case LEN(身份證號)
/*身份證號出生日期後3位, 如果為奇數則性別為男, 55歲退休; 如果為偶數則為女, 50歲退休*/
when 15 then dateadd(year, case convert(int, SUBSTRING(身份證號,15,1))%2 when 1 then 55 else 50 end, convert(date, SUBSTRING(身份證號, 7, 6), 12) )
when 18 then dateadd(year, case convert(int, SUBSTRING(身份證號,17,1))%2 when 1 then 55 else 50 end, convert(date, SUBSTRING(身份證號, 7, 8), 112) )
else NULL
end as 退休日期
from 養老表
❹ sql 從身份證中自動獲取出生日期,顯示格式為XXXX-XX-XX
以oracle為例,通過substr()方法截取
年月日
,即可源檔。
代碼如下:
declare
cardid
varchar(20);
birth
varchar(20);
begin
/*給cardid賦值一個18位身份證做好號碼*/純裂鉛
birth
:=
substr(cardid,7,4)
||
'-'
||
substr(cardid,11,2)
||
'-'
||
substr(cardid,13,2);
dbms_output.put_line(birth);
end;
❺ sql從身份證中取出出生日期
以oracle為例:假設你的tb_csm_indivial表裡面CERTIFICATE_CODE欄位存著身份證號:
select
to_date(substr(CERTIFICATE_CODE,7,8),'%yyyy%mm%dd')
from
tb_csm_indivial
where
CERTIFICATE_CODE='210102197908223722'
;這樣就查出來了這個身份證號的出生日期;
下面的腳本就是計算當前日期減去出生日期求出來的生日
select
EXTRACT(year
FROM
to_date('2018-11-22','yyyy-mm-dd'))
-
EXTRACT(year
FROM
to_date(substr(CERTIFICATE_CODE,7,8),'yyyy-mm-dd'))
years
from
tb_csm_indivial
where
CERTIFICATE_CODE='210102197908223722';
至於剩下的年齡區間樓主自己應該知道怎麼求了把
❻ 如何在資料庫中利用sql從18位身份證號中截取出生日期,身份證號在reader表中
sqlserver:
select substring(身份證號,7,8) from reader
oracle:
select substr(身份證號,7,8) from reader
❼ SQL 利用身份證提取生日月
when substring(HY_JBDA.證件號碼,11,2) ='01' then '1月'
❽ 用sql語句怎麼提取身份證號碼中的生日信息
sellect * from 表 where 身份證號 >='223154198802150000' and 身份證號<='224999154198802159999'