欢迎光临赵玉开的技术博客
天马行空 无怨无嗔
博客园
首页
新随笔
联系
订阅
管理
随笔 - 103 文章 - 2 评论 - 919 trackbacks - 21
<
2008年7月
>
日
一
二
三
四
五
六
29
30
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
1
2
3
4
5
6
7
8
9
转载请保留链接。
我的最新闪存
国际管理VS中国国情
链接
8-21 13:48
与我联系
发短消息
搜索
常用链接
我的随笔
我的空间
我的短信
我的评论
更多链接
我的参与
我的新闻
最新评论
我的标签
留言簿
(12)
给我留言
查看留言
我管理的小组
生活杂谈
Sql Server数据库小组
我参加的小组
每日一句英语
ASP.NET
创业交流
Visual Studio
设计模式
.NET 3.x
CLR基础研究小组
项目经理联盟
垂直搜索研究
我参与的团队
.Net流程管理系统联盟(0/28)
数据库团队(0/230)
我的标签
t-sql
(8)
sql
(8)
performance
(3)
c#
(3)
cte
(2)
function
(2)
sql server
(2)
partition
(1)
index
(1)
cs
(1)
更多
随笔分类
.Net开发经验(42)
c#(8)
sql server(9)
Xml,XPath,Xsd(1)
简单问题(24)
客户端(9)
软件设计(5)
设计模式(1)
生活(15)
数据库(18)
算法,建模(3)
网站管理(2)
随笔档案
2008年8月 (4)
2008年7月 (6)
2008年6月 (7)
2008年5月 (19)
2008年4月 (7)
2008年3月 (2)
2008年1月 (1)
2007年12月 (3)
2007年11月 (2)
2007年10月 (1)
2007年9月 (3)
2007年6月 (3)
2007年5月 (6)
2007年4月 (22)
2007年3月 (16)
文章分类
敏捷开发(1)
相册
hehe
最新随笔
1. WebClient.UploadValues Post中文乱码的解决方法
2. 警惕使用WebClient.DownloadFile(string uri,string filePath)方法
3. 什么是JSON
4. 客户端即时计算控件的值
5. 如果你的数据库文件只剩下数据文件没有日志文件时,如何附加
6. 必须掌握的八个【cmd 命令行】[转]
7. 2008,属于每一个中国人!
8. 大访问量高性能网站实践
9. CSS关于SEO优化的细节
10. 兰德公司对中国人的评价
积分与排名
积分 - 146166
排名 - 248
最新评论
1. re: 如何定义Xsd文件
顶一下
--weiwei100%
2. re: 您未必知道的Css技巧
很多都知道,不过还是谢谢楼主
--天逸网络
3. re: 应用程序权限设计
不错
--不错
4. re: 三层开发中容易犯的错误
越讲越糊涂了,其实我感觉只要把各层的功能划清楚了,就不会存在这样的问题
--hbf
5. re: 应用程序权限设计
@FreeDog
可以统一资源主键的类型,比如说都用int型,这样在就不需要再多建表了,只需要增加一个资源类型的字段就可以了;当然还需要具体问题具体分析。
--玉开
阅读排行榜
1. 应用程序权限设计(7614)
2. 三层开发中容易犯的错误(6356)
3. 翻译 一些很酷的.Net技巧(4416)
4. 如此高效通用的分页存储过程是带有sql注入漏洞的(4241)
5. 巧妙利用图片IMG的onerror事件,对付网通电信的南北分家(3864)
评论排行榜
1. 三层开发中容易犯的错误(129)
2. 如此高效通用的分页存储过程是带有sql注入漏洞的(66)
3. for VS. foreach 那个性能更高,为什么,怎么选择(54)
4. 应用程序权限设计(49)
5. 建索引(尤其是主键)时请注意索引列的顺序(41)
60天内阅读排行
1. CSS关于SEO优化的细节(1980)
2. 兰德公司对中国人的评价(375)
3. 创业思考(270)
4. 大访问量高性能网站实践(259)
5. 必须掌握的八个【cmd 命令行】[转](152)
使用t-sql从身份证号中提取生日
使用t-sql从身份证号中提取生日
,一下是转换16位身份证号的例子,仅供参考。
create
function
getDateFromID(
@id
char
(
15
)
)
returns
datetime
as
begin
declare
@birthPart
char
(
6
);
set
@birthPart
=
substring
(
@id
,
7
,
6
);
declare
@year
int
;
set
@year
=
cast
(
left
(
@birthPart
,
2
)
as
int
);
if
@year
<
10
SET
@year
=
2000
+
@year
;
else
SET
@year
=
1900
+
@year
;
declare
@birthday
datetime
;
set
@birthday
=
cast
(
cast
(
@year
as
char
(
4
))
+
'
-
'
+
substring
(
@birthpart
,
3
,
2
)
+
'
-
'
+
substring
(
@birthpart
,
6
,
2
)
as
datetime
)
return
@birthday
end
GO
declare
@id
char
(
16
)
set
@id
=
'
510106830328511
'
;
print
dbo.getDateFromID(
@id
)
Tag标签:
sql
,
t-sql
posted on 2008-05-22 16:56
玉开
阅读(398)
评论(5)
编辑
收藏
所属分类:
数据库
FeedBack:
#1楼
2008-05-22 17:10
Cheney Shue
身份证有16位的吗?
顺便附带Oracle下判断和读取18位和15位身份证号生日的方法
select
case when regexp_like(ltrim(rtrim(ID_NUM)),'^[[:digit:]]{17}([[:digit:]]|x|X)$') then to_date(substr(ltrim(rtrim( ID_NUM)),7,8),'YYYYMMDD') when regexp_like(ltrim(rtrim(ID_NUM)),'^[[:digit:]]{15}$') then to_date('19' || substr(ltrim(rtrim(ID_NUM)),7,6),'YYYYMMDD')
end as Birthday
from Table
回复
引用
查看
#2楼
[
楼主
] 2008-05-22 17:17
玉开
@Cheney Shue
应该是15位 3Q;Oracle很强大,sql server 2005可以用clr函数做类似实现
回复
引用
查看
#3楼
2008-06-16 22:30
SPARON
呵呵,感谢玉开,我来晚了。
回复
引用
查看
#4楼
2008-07-05 03:42
深蓝
楼主是成都人吗?我觉得楼主
if @year < 10
SET @year = 2000 + @year;
else
SET @year = 1900 + @year;
这句是多余的,在中国根本不会出现这种情况。国家就是为了防止出现这种判断才将身份证升到18位的。
回复
引用
查看
#5楼
[
楼主
]
2008-07-07 12:28
玉开
@深蓝
我不是成都人,谢谢你的回复。
回复
引用
查看
社区
新闻
新用户注册
刷新评论列表
标题
姓名
主页
Email
(只有博主才能看到)
验证码
*
看不清,换一张
[
登录
][
注册
]
内容(请不要发表任何与政治相关的内容)
Remember Me?
登录
使用高级评论
新用户注册
返回页首
恢复上次提交
[使用Ctrl+Enter键可以直接提交]
该文被作者在 2008-05-22 17:18 编辑过
历史上的今天:
2007-05-22
数据源自给自足的Repeater
所属分类的其他文章:
·
如果你的数据库文件只剩下数据文件没有日志文件时,如何附加
·
sql server2005对t-sql的增强之在聚合函数的后面使用over关键字
·
sql取所有记录中每天的最后一笔交易的记录
·
使用t-sql从身份证号中提取生日
·
建索引(尤其是主键)时请注意索引列的顺序
·
sql server 中用户定义函数的限制
·
Sql Server 分区演练
·
Sql Server2005对t-sql的增强之Cross Apply
·
Sql Server2005对t-sql的增强之通用表表达式CTE
·
Sql Server2005对t-sql的增强之top
最新IT新闻:
·
英特尔雅虎开发网络计算机频道
·
Windows Live视频邮件9月9日开始测试
·
Intel首次公开展示Nehalem架构迅驰3平台
·
Pogo浏览器
·
洪磊口述:番茄花园如何捆绑流氓软件月入十万
博客园新闻频道
博客园首页
社区