sql 身份证号码提取出生日期

说实话,用Management Studio搞这个身份证出生日期提取,我当年也干过。
你写的步骤里有个小坑,得提一嘴。
第三步那个SQL语句,cardid这字段名得跟你表里真的一样,不一样的话直接报错。
我以前就吃过这亏,明明写的是id_card_number,结果系统死活找不着,折腾半天才发现是输错了。

有意思的是,这种操作在老公司特别常见。
他们那套系统里,身份证号是杂七杂八存法的,有的连空格带特殊符号。
当时有个老哥,写了个通用函数,不管啥格式身份证号,只要身份证号长度对,就能吐出生日子。
那代码现在想想都佩服,用了好几个case when嵌套,简直像绕口令。
不过说实话,现在用正则表达式搞一下更干净。

执行那步也值得注意。
你按F5 或者那个绿色三角,最好先保存一下会话。
我这习惯是,每次连数据库前,先Ctrl+S,不然有时候会提示"未保存的更改将被丢失",挺烦人的。

最后显示结果那部分,别指望Management Studio自动给你转成日历格式。
它只会把身份证第7 到1 4 位原样显示出来,比如"1 9 9 001 01 "。
你要是想要"1 9 9 0-01 -01 "这种格式,还得在SQL里再加个convert(varchar,出生日期,2 3 )之类的玩意儿。
这块我没亲自跑过Management Studio的界面,但SQL这步肯定得加。

数据量小的时候没问题,我以前处理几百条数据,几秒钟就出来了。
但你要是表里有几十万条,那先筛选再跑可能更省事。
我当时也没想明白为啥,可能是那个substring函数在大型数据集上会慢。

access 如何统计人数,例如:如何统计在1980年出生的人的人数

直接用YEAR函数统计特定年份人数,例如1 9 8 0年出生人数,SQL语句:SELECT COUNT() FROM score WHERE YEAR(出生日期) = 1 9 8 0。
以Access2 01 0为例,若“score”表有张三、李四等1 9 8 0年出生的记录,查询结果将是4 确保日期格式正确,避免结果不准确。

数据库怎么查出本月过生日的同学

前天我帮一个朋友在学校的电脑室查了一下,他的一个同学这月过生日。
他给我看了学生信息表的截图,我注意到有一个字段叫birthday,是日期类型。
我就想,这要是想查查本月的生日,得用SQL语句,还得用month函数。

突然想到,得用SQLServer2 008 R2 的月函数month,然后是getdate()来获取当前日期。
我朋友点头表示同意,我就打开SQL编辑器,输入了下面这句:
select from student where month(birthday)=month(getdate())
结果出来后,我看到有好几个同学的生日是这个月,比如sno为5 的同学,他的生日正好在3 月1 0日。
这个月确实有几个同学的生日,挺热闹的。

等等,还有个事,我突然想到,如果只是想查这个月生日的同学,是不是可以不用getdate(),直接用当前月份的数字呢?比如这个月是3 月,就直接写month(birthday)=3 这又是一个小技巧啊。

1 设计一个SQL语句,显示学生表中年龄最大的学生的姓名、性别和出生日期。

2 02 3 年,我那个朋友问了个问题,关于SQL查询的。
说学生表中要找年龄最大的学生,成绩表中要找最高分。
我给他解释了,用子查询和关联条件。

他说学生表用这个:
select 姓名, 性别, 出生日期 from 学生表 where 出生日期 = (select max(出生日期) from 学生表)
这个是先找出最大的出生日期,然后在外层找到匹配的学生。

成绩表用这个:
select 学号, 课程编号, 考试成绩 from 成绩表 a where 考试成绩 = (select max(考试成绩) from 成绩表 b where b.学号 = a.学号 and b.课程编号 = a.课程编号)
这个是先找出相同学号和课程编号的最高分,然后在外层找到这些记录。

他还提到要建索引提高效率,还有注意字段名和数据表关系。

我说对啊,SQL得讲究技巧,规范写法很重要。
他点点头,说以后写SQL得注意这些细节。
我笑着说,慢慢来,熟能生巧。
算了,你看着办吧。