在TSQL中,您如何从int转换为日期时间并给出年龄?

Pau*_*and 6 t-sql sql-server

什么是以下的SQL,

我在int领域有一个出生日期,

即YYYYMMDD = 19600518

我想得到这个年龄.

Luk*_*keH 12

其他答案都没有实际计算年龄.他们正在计算年度边界而不考虑生日.

要计算年龄,您需要执行以下操作:

DECLARE @d DATETIME
SET @d = CONVERT(DATETIME, CONVERT(VARCHAR(8), 19600518), 112)

SELECT DATEDIFF(year, @d, GETDATE())
    - CASE WHEN DATEADD(year, DATEDIFF(year, @d, GETDATE()), @d) <= GETDATE()
           THEN 0 ELSE 1 END AS Age
Run Code Online (Sandbox Code Playgroud)