learning_new Ответов: 1

Вычислить возраст пользователя на основе столбца в SQL


У меня есть таблица, которая обновляется ежедневно, и у меня есть столбец под названием Год (когда кто-то родился), который я хотел бы рассчитать возраст этого человека.

USERID  Vendors  dob(Year)   login
1        yes     1985        yes
2        yes     1961        yes


Я хотел бы иметь что-то вроде этого

USERID  Vendors  dob(Year)   login   Age
1        yes     1985        yes     34
2        yes     1961        yes     59


Что я уже пробовал:

SELECT 
       dob(Year)  
        ,GETDATE() AS (Today)
        ,DATEDIFF (YY, dob(Year),GETDATE()) - 
  CASE
  WHEN DATEADD(YY,DATEDIFF(YY,dob(Year),GETDATE()), dob(Year)
       > GETDATE () THEN 1

  ELSE 0
       END  AS (AGE)
from table

CHill60

Используя эту логику, вы завышаете чей-то возраст в зависимости от даты выполнения запроса. Например, кому-то, родившемуся в ноябре 1980 года, в настоящее время 39 лет, но ваша логика вернет их возраст как 40

1 Ответов

Рейтинг:
5

MadMyche

Чересчур сложно.

SQL Server имеет Year() функция, которая вернет годовую часть даты-времени, которую она заключает в себе
SELECT CurrentYear = Year(GetDate())

Для запроса... это должно дать вам хорошее начало

SELECT *, Age = Year(GetDate()) - [dob(year)];
Ссылка:
Год (Transact-SQL) - SQL Server | Microsoft Docs[^]


Maciej Los

Превосходно!

MadMyche

спасибо