인사말 StackOverflow 마법사.TSQL "시드"날짜에서 다른 모든 금요일 결정
SQL datetime 계산은 항상 문제를 일으 킵니다. 나는 그 직원의 고용인이 그 달의 마지막 봉급 날과 다음 달 첫날 사이에 떨어 졌는지 알아 내려고합니다. 나는 1970년 1월 2일이 월급 날이었다 알고
- 나는 우리의 봉급은 다른 모든 금요일 알고, 그 날짜 :.. (즉, 그들은
한 과학적 자신의 고용 달에 월급을받을 않았다 우리가 가지고있는 가장 긴 활성 직원 앞에. 나는 각 활성 직원의 고용 날짜를 알고
- 을 (테이블에서 가져온). 내가 아는
- 을 날짜를 고용. 다음 달 중 첫 번째 (계산할 수 있습니다)
내가 머리를 감싸고있는 것처럼 보일 수없는 것은 고용 날짜와 고용 날짜 사이에 지불 날짜가 있는지 결정하기 위해 해당 날짜 (1970 년 1 월 1 일)와 함께 datediff, dateadd, datepart 등을 사용하는 방법입니다. 질문과 다음 달 초. 나는 알고있다,
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 :
의사 코드에서은, 여기에 내가 할 노력하고있어입니다 2008 년 9 월 19 일에 월급 날이 있었고 2008 년 10 월 3 일까지 또 다른 월급 날이 없었기 때문에 위의 부울은 거짓 일 것이고 나는 이것을 "할 것"이라고 말했습니다. @priorPayDate의 가치는 어떻게 결정합니까?
stubaker,이 작업은 아름답게 작동합니다. 나는 당신이 내게 곤란을 겪었던 것에 대해 마음을 감싸 준 것에 대해 감사를 표할 수 없다. – DJGray