mssql 通过身份证号显示 person 表中所有客户年龄(周岁即可)
时间: 2024-02-05 12:03:15 浏览: 82
假设 person 表中身份证号字段为 id_card,出生日期字段为 birthday,则可以使用以下 SQL 语句计算客户年龄:
```sql
SELECT DATEDIFF(YEAR, birthday, GETDATE()) - CASE WHEN MONTH(birthday) > MONTH(GETDATE()) OR (MONTH(birthday) = MONTH(GETDATE()) AND DAY(birthday) > DAY(GETDATE())) THEN 1 ELSE 0 END AS age
FROM person
WHERE id_card = '身份证号'
```
其中,DATEDIFF(YEAR, birthday, GETDATE()) 计算当前日期与出生日期之间的年份差,减去一个修正值 CASE WHEN ... THEN 1 ELSE 0 END 可以根据出生日期和当前日期的月份和日期确定客户是否已经过生日,从而得到客户的实际年龄。
相关问题
mssql中如何通过身份证号算出person 表中所有客户年龄(周岁即可)
在 MSSQL 中可以使用 DATEDIFF 函数和 GETDATE 函数来计算年龄。具体操作如下:
1. 使用 DATEDIFF 函数计算出当前日期与出生日期之间的年份差:
```
DATEDIFF(year, birthdate, GETDATE())
```
其中,birthdate 为 person 表中客户的出生日期字段。
2. 如果当前日期还没有过客户的生日,则需要将上一步计算出的年份差减去 1:
```
DATEDIFF(year, birthdate, GETDATE()) - CASE WHEN DATEADD(year, DATEDIFF(year, birthdate, GETDATE()), birthdate) > GETDATE() THEN 1 ELSE 0 END
```
3. 将上一步计算出的年份差作为客户的年龄。
完整的 SQL 查询语句如下:
```
SELECT *, DATEDIFF(year, birthdate, GETDATE()) - CASE WHEN DATEADD(year, DATEDIFF(year, birthdate, GETDATE()), birthdate) > GETDATE() THEN 1 ELSE 0 END AS age
FROM person
WHERE id_card = '身份证号码'
```
其中 id_card 为 person 表中客户的身份证号码字段。运行以上 SQL 查询语句即可得到指定身份证号码的客户的年龄。
阅读全文