标题:身份证号码取出生日期
只看楼主
mxdsl2010
Rank: 1
等 级:新手上路
帖 子:1
专家分:0
注 册:2010-8-16
 问题点数:0 回复次数:6 
身份证号码取出生日期
有一张表a ,
其中包含字段 身份证号码sfzhm ,出生日期csrq
身份证号码有15位,18位,和空白
现要取出生日期csrq 为sfzhm的出生日期
如sfzhm    csrq
130501198001200010               1980-01-20
130501810220001               1981-02-20
若身份证号码值 为空白,则出生日期列空白
搜索更多相关主题的帖子: 身份证号码 
2010-08-16 17:12
cnfarer
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:179
帖 子:3330
专家分:21157
注 册:2010-1-19
得分:0 
字符串处理

★★★★★为人民服务★★★★★
2010-08-17 06:31
aei135
Rank: 9Rank: 9Rank: 9
等 级:贵宾
威 望:12
帖 子:232
专家分:1176
注 册:2009-4-6
得分:0 
select case when charindex(convert(varchar(8),csrq,112),sfzhm)>0 then csrq else null end
from table
2010-08-17 09:57
yuma
Rank: 11Rank: 11Rank: 11Rank: 11
来 自:银河系
等 级:贵宾
威 望:33
帖 子:1883
专家分:2904
注 册:2009-12-22
得分:0 
路过~~

心生万象,万象皆程序!
本人计算机知识网:http://bbs.为防伸手党,本站已停止会员注册。
2010-08-17 12:59
qingshuiliu
Rank: 10Rank: 10Rank: 10
等 级:贵宾
威 望:17
帖 子:323
专家分:1538
注 册:2009-12-28
得分:0 
一个存储过程,你直接调用就可以了
set ANSI_NULLS ON
set QUOTED_IDENTIFIER ON
go
Create PROCEDURE [dbo].[GetBirthDay]
(
    @id varchar(30)

)
AS
BEGIN
declare @birthday varchar(30)
if(len(Rtrim(@id))=18)
begin
set @birthday=substring(@id,7,8)
set @birthday=substring(@birthday,1,4)+'年'+substring(@birthday,5,2)+'月'+substring(@birthday,7,2)+'日'
end
else
begin
set @birthday=substring(@id,7,6)
set @birthday='19'+substring(@birthday,1,2)+'年'+substring(@birthday,3,2)+'月'+substring(@birthday,5,2)+'日'
end
select @birthday
END
2010-08-17 15:07
老子小哈
Rank: 1
等 级:新手上路
帖 子:4
专家分:0
注 册:2010-7-11
得分:0 
路过看看
2010-08-20 12:05
tww124849980
Rank: 2
等 级:论坛游民
帖 子:13
专家分:22
注 册:2010-6-29
得分:0 
select sfzhm,csrq=
case when len(sfzhm)=18 then convert(varchar(8),substring(sfzhm,7,8),112)
when len(sfzhm)=15 then convert(varchar(8),'19'+substring(sfzhm,7,6),112)
else null
end
from sfz
2010-08-21 09:59



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-315873-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.441412 second(s), 8 queries.
Copyright©2004-2025, BCCN.NET, All Rights Reserved