SQLser 根据身份证计算年龄
时间: 2023-09-08 09:15:49 浏览: 106
可以使用 SQL Server 内置的函数来根据身份证计算年龄。以下是一个示例代码:
```sql
DECLARE @idCard VARCHAR(18) = '110101199001011234' -- 身份证号码
DECLARE @birthYear INT = CAST(SUBSTRING(@idCard, 7, 4) AS INT) -- 出生年份
DECLARE @birthMonth INT = CAST(SUBSTRING(@idCard, 11, 2) AS INT) -- 出生月份
DECLARE @birthDay INT = CAST(SUBSTRING(@idCard, 13, 2) AS INT) -- 出生日
DECLARE @nowYear INT = YEAR(GETDATE()) -- 当前年份
DECLARE @nowMonth INT = MONTH(GETDATE()) -- 当前月份
DECLARE @nowDay INT = DAY(GETDATE()) -- 当前日
-- 如果出生日期大于当前日期,则减去一岁
IF (DATEFROMPARTS(@nowYear, @nowMonth, @nowDay) < DATEFROMPARTS(@birthYear, @birthMonth, @birthDay))
SET @birthYear = @birthYear - 1
-- 计算年龄
SELECT @nowYear - @birthYear AS Age
```
示例中使用了 `SUBSTRING` 函数来提取身份证中的出生年月日,使用了 `YEAR`、`MONTH` 和 `DAY` 函数来获取当前日期的年月日,使用了 `DATEFROMPARTS` 函数来构造日期对象,并使用 `SET` 语句来减去可能的一岁。最后使用减法运算符计算年龄。
阅读全文