Как я упоминаю в комментариях, это комбинированный дубликат вопросов , конвертирующий метку времени эпохи в sql сервер (читаемый человеком формат) и Как рассчитать возраст (в годах) на основе на дату рождения и getDate () .
Пример данных:
CREATE TABLE dbo.YourTable (DoB float);
INSERT INTO dbo.YourTable (DoB)
VALUES (-434419200000),
(606960000000),
(1332806400000),
(1395878400000),
(-87350400000),
(890956800000);
Затем, используя первую ссылку, мы получаем:
SELECT DATEADD(SECOND, DoB / 1000,'19700101') --As yours is milliseconds, not seconds.
FROM dbo.YourTable;
Тогда мы можем используйте ответ по второй ссылке:
SELECT YT.DoB,
V.DateOfBirth,
CONVERT(int,DATEDIFF(yy, V.DateOfBirth, GETDATE()) +
CASE WHEN GETDATE() >= DATEFROMPARTS(DATEPART(yyyy, GETDATE()), DATEPART(m, V.DateOfBirth), DATEPART(d, V.DateOfBirth)) THEN (1.0 * DATEDIFF(DAY, DATEFROMPARTS(DATEPART(yyyy, GETDATE()), DATEPART(m, V.DateOfBirth), DATEPART(d, V.DateOfBirth)), GETDATE()) / DATEDIFF(DAY, DATEFROMPARTS(DATEPART(yyyy, GETDATE()), 1, 1), DATEFROMPARTS(DATEPART(yyyy, GETDATE()) + 1, 1, 1)))
ELSE -1 * (-1.0 * DATEDIFF(DAY, DATEFROMPARTS(DATEPART(yyyy, GETDATE()), DATEPART(m, V.DateOfBirth), DATEPART(d, V.DateOfBirth)), GETDATE()) / DATEDIFF(DAY, DATEFROMPARTS(DATEPART(yyyy, GETDATE()), 1, 1), DATEFROMPARTS(DATEPART(yyyy, GETDATE()) + 1, 1, 1)))
END) AS Age
FROM dbo.YourTable YT
CROSS APPLY (VALUES (DATEADD(SECOND, YT.DoB / 1000, '19700101'))) V (DateOfBirth);
Если этот ответ поможет, я предлагаю отказаться от ответов, на которые я ссылаюсь выше, так как это комбинация этих ответов.