Member 14979932 Ответов: 1

Манипулирование функциями даты


Привет. Я пытаюсь подсчитать, сколько сотрудников будут получать премию за выслугу лет в ближайшие 5 лет, если выслуга лет составляет 20 лет?

ВЫБИРАТЬ
Функция datediff(ый,getdate(),то функция dateadd(ый,20,[дата приема на работу])) YearsInService
С [см.].[Работник]

Не знаю, как включить его, чтобы найти сотрудников, которые должны быть в ближайшие 5 лет.

Спасибо

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

ВЫБИРАТЬ
Функция datediff(ый,getdate(),то функция dateadd(ый,20,[дата приема на работу])) YearsInService
С [см.].[Работник]

1 Ответов

Рейтинг:
0

OriginalGriff

Подумайте о том, как бы вы поступили в реальной жизни: вы бы работали со всеми сотрудниками, чья дата вступления была между 15 и 20 годами назад.

Итак, возьмите текущую дату, удалите 15 лет, повторите в течение двадцати лет и выберите сотрудников, у которых есть JoinDate BETWEEN StartDate AND EndDate.

Я бы настоятельно рекомендовал, чтобы ваш SQL генерировал два значения DATETIME в качестве начальной и конечной дат - выполнение этого "на лету", как показывает ваш пример, может вызвать периодические проблемы, если запрос плохо рассчитан или долго выполняется.