Приветствия StackOverflow Wizards.TSQL Определите каждую пятницу с «семенной» даты
SQL datetime вычисления всегда дают мне проблемы. Я пытаюсь определить, упал ли наемный работник сотрудника между последней зарплатой этого месяца и первым в следующем месяце. (Т.е. они получают зарплату в их прокатном месяце
Knowns:.
- Я знаю, что наши выплаты зарплат являются каждой пятницей
- Я знаю, 01/02/1970 был Payday, и эта дата. предшествует длинный активный работник у нас есть.
- Я знаю дату прокатной каждого активного работника (вытянут из таблицы).
- Я знаю, (можно вычислить) первое число месяца, следующего за аренду даты.
Возможно, я не могу склонить голову, чтобы использовать дату посева (01/02/1970) с датой, датой, датой и т. Д., Чтобы определить, существует ли дата оплаты между датой найма в вопрос и первый из следующего месяца.
В псевдокоде, вот что я пытаюсь сделать:
declare @seedDate datetime = '01/02/1970' -- Friday - Payday seed date from which to calculate
declare @hireDate datetime = '09/26/2008' -- this date will actually be pulled from ServiceTotal table
declare @firstOfMonth datetime = DATEADD(MONTH, DATEDIFF(MONTH, 0, @hireDate) + 1, 0) -- the first of the month following @hireDate
declare @priorPayDate datetime -- calculate the friday payday immediately prior to @firstOfMonth
if @priorPayDate BETWEEN @hireDate AND @firstOfMonth
begin
-- do this
end
else
begin
-- do that
end
Использование жестко @hireDate выше, и @seedDate определить каждый-другой-пятница выплаты зарплаты, я знаю, что день выплаты жалованья был 9/19/2008, а не один до 10/03/2008, поэтому логическое значение выше было бы ЛОЖНЫМ, и я буду «делать это», а не «делать это». Как определить значение @priorPayDate?
stubaker, это работает красиво. Я не могу адекватно выразить свою признательность за то, что ты обнимал меня вокруг того, что меня озадачило. – DJGray