데이터를 추출 할 특정 날짜를 결정해야합니다.SQL - 근무일 기준으로 특정 날짜를 얻으십시오
예를 들어, 매월 1 일에 이루어지는 트랜잭션은 2 일 회계 시스템에 게시되고 해당 월의 마지막 날에 이루어지는 트랜잭션은 1 일 회계 시스템에 전기됩니다. 다음 달.
그래서 일반적으로 10 월에 10 월이되는 모든 레코드를 가져올 수 있지만 10 월 2 일과 11 월 2 일 사이에 날짜가있는 레코드를 추출해야합니다.
Declare @EarliestDate varchar(8), @SQL NVARCHAR(1000), @sDate varchar(8)
-- get data for the last 3 months
SET @EarliestDate= CAST(DATEPART(YEAR,DATEADD(m,-3, getdate())) AS VARCHAR(4))
+ RIGHT('00' + CAST(DATEPART(mm, DATEADD(m,-2, getdate())) AS varchar(2)), 2)+ '02'
:
나는 (그것은 주말이 경우에서와 같이 만약 레코드가 주말 후 첫 근무일에 대한 포스팅 날짜를 표시합니다 중요하지 않습니다) 가장 빠른 날짜를 얻을 수있는 아래의 코드를
이제 11 월 1 일이 주말인지 확인해야합니다. 그렇다면 다음 월요일의 날짜를 사용하십시오.
나는 아래의 코드를 시작했다하지만 난 제대로 동작하지 않습니다 :
Declare @LatestDate datetime
set @LatestDate = '01/11/2014'
if datepart(dw,@LatestDate) in (1,7)
Begin
set @LatestDate = DATEADD(d,1,@LatestDate)
End
하십시오 당신은 저를 보여줄 수 내가 잘못 하겠어 어디? 이상적으로는 연중 무휴로 일년 내내 일해야하며, 매월 1 일 이후 항상 첫 근무일을 얻습니다.
, 당신은 방아쇠를 통해 채워지는 새로운 메타 데이터 열을 추가하는 것이 좋습니다, 그럼 그냥 떨어져 조회 그 열. 당신이 알고있는 것보다 더 많은 비즈니스 로직이있는 것처럼 보입니다. 휴일 문제입니까? –
@LynnCrumbling : 예, 방금 휴일이 문제가 될 것임을 상기시켜주었습니다. 날짜가 공휴일 테이블에도 있는지 확인해야합니다. –
나는 언젠가 다른 사람이 언젠가는, Post_Date를 기반으로 쿼리해야 할 것입니다. 이것은 응용 프로그램이나 행 삽입/업데이트에서 실행되는 트리거로 채워야하는 추가 열과 같은 느낌입니다. –