2016-11-07 10 views
0

Мне нужна помощь с некоторым запросом в MS ACCESS 2016 с языком SQL. У меня есть таблица с 20 работодателями, а таблица включает имя, фамилию, пол, дату рождения, дату найма и оплаты. Мне нужно рассчитать определенный возраст, я имею в виду, я хочу знать, кто, например, 25 лет моих работодателей, я не знаю, как написать команду на языке SQL, чтобы рассчитать это, я был бы очень благодарен, если кто-то может мне помочь ,Язык SQL в MS ACCESS 2016

+2

Покажите нам, что вы уже достигли! – duDE

+0

Добавьте пример данных таблицы и ожидаемый результат. (Также форматированный текст.) – jarlh

+0

Ну, если вы хотите написать запрос, то местом для начала является изучение языка. Учебники, видеоролики, книги, документация, примеры, классы, онлайн-уроки изобилуют, чтобы помочь людям изучать языки SQL и другие языки. –

ответ

0

Вы не можете рассчитать 100% правильный возраст непосредственно в SQL простым способом.

Таким образом использовать UDF (определенные функции пользователя), как это:

Public Function AgeSimple(_ 
    ByVal datDateOfBirth As Date) _ 
    As Integer 

' Returns the difference in full years from datDateOfBirth to current date. 
' 
' Calculates correctly for: 
' leap years 
' dates of 29. February 
' date/time values with embedded time values 
' 
' DateAdd() is used for check for month end of February as it correctly 
' returns Feb. 28. when adding a count of years to dates of Feb. 29. 
' when the resulting year is a common year. 
' After an idea of Markus G. Fischer. 
' 
' 2007-06-26. Cactus Data ApS, CPH. 

    Dim datToday As Date 
    Dim intAge As Integer 
    Dim intYears As Integer 

    datToday = Date 
    ' Find difference in calendar years. 
    intYears = DateDiff("yyyy", datDateOfBirth, datToday) 
    If intYears > 0 Then 
    ' Decrease by 1 if current date is earlier than birthday of current year 
    ' using DateDiff to ignore a time portion of datDateOfBirth. 
    intAge = intYears - Abs(DateDiff("d", datToday, DateAdd("yyyy", intYears, datDateOfBirth)) > 0) 
    End If 

    AgeSimple = intAge 

End Function 

Скопируйте и вставьте код в пустой модуль.

Затем выполнить запрос:

Select *, AgeSimple([DateOfBirth]) As Age 
From YourTable 
Where AgeSimple([DateOfBirth]) >= 25 

Конечно, заменить имена таблиц и полей с теми из ваших.