ct415884941
ct415884941
2019-02-12 13:47
采纳率: 100%
浏览 2.2k

sql-server身份证号码取年龄段

求救 才入职不久 领导要去用身份证号码统计年龄段
身份证字段 zjhm
表名 jl
谢谢

  • 点赞
  • 写回答
  • 关注问题
  • 收藏
  • 邀请回答

4条回答 默认 最新

  • qq_35955916
    程序员的键盘 2019-02-13 11:19
    已采纳
    declare @jl table(zjhm varchar(50))
      insert into @jl(zjhm)
      select '000000199412080000'
      union all
      select '000000199412080000'
      union all
      select '000000199312080000'
      union all
      select '000000199312080000'
    
      select YEAR(GETDATE())-CONVERT(int, substring(zjhm,7,4)) 年龄,COUNT(1) 人数 from @jl
      group by YEAR(GETDATE())-CONVERT(int, substring(zjhm,7,4))
    
    年龄  人数
    25      2
    26      2
    
    
    点赞 评论
  • qq_26929957
    Cc_Davis_cC 2019-02-12 13:54

    --1、SUBSTRING()方法---
    -- substring()函数说明---
    --1)语法:SUBSTRING(character,start,length)

    --2)介绍:参数1:要截取的字符串,参数2:开始截取的下标,参数3:截取的字符长度
    --3)使用:
    --返回从字符串中间的字符--
    select SUBSTRING('SqlServer_2008',4,6)

    点赞 评论
  • u010246346
    秋落叶似童年 2019-02-12 14:11

    select substring(zjhm,7,8) from jl

    点赞 评论
  • liyue071714118
    SQL数据库开发 2019-02-17 17:36
    WITH jl AS (
    SELECT '000000198901010000' jzhm
    UNION ALL
    SELECT '000000199001010000'
    UNION ALL
    SELECT '000000199001010000'
    UNION ALL
    SELECT '000000199101010000'
      )
    
     SELECT 
     SUBSTRING(jzhm,7,4) 出生年份,
     DATEDIFF(yy,CONVERT(DATETIME ,SUBSTRING(jzhm,7,8),120),CONVERT(DATETIME,GETDATE(),120)) AS '年龄',
     COUNT(1) AS '人数'
     FROM jl
     GROUP BY SUBSTRING(jzhm,7,4),DATEDIFF(yy,CONVERT(DATETIME ,SUBSTRING(jzhm,7,8),120),CONVERT(DATETIME,GETDATE(),120))
    

    图片说明

    点赞 评论

相关推荐