약 11PM에서 8AM 사이에 실행되는 많은 작업의 실행 시간 레코드가 들어있는 데이터베이스 테이블을보고 있습니다. 일부 작업은 오전 12시 이전에 시작되고 끝납니다. 일부는 12AM 이후에 시작하고 끝납니다. 그리고 나머지는 오전 12시 이전에 시작되어 12시 이후에 끝납니다. 그래서 다소 흩어졌습니다.마지막 작업 실행에 해당하는 레코드 얻기
매일 해당 일에 해당하는 레코드는 이고 데이터베이스 테이블에는이 추가됩니다. 특정 작업이 완료되면 이후에 레코드가 으로 생성됩니다. 그래서, 1 레코드 = 1 특정 작업 1 실행.
테이블의 필드 중 일부는 작업 이름, 날짜 - 시간을 시작하고, 등
지금, 나는 마지막 날의 실행 모든 작업에 해당하는 기록을 인출 할 종료 날짜 - 시간. 따라서 특정 작업이 어제 밤에 실행 되었다면, 은 어제 전날의 기록을 원하지 않습니다. 또한 작업의 절반이 실행을 마쳤을 때 3시에 일어나면 현재 실행중인 레코드 만 원합니다.
어떻게 해결할 수 있습니까?
내가 지금까지 시도한 내용 :
많은 것들. 내가 시작한 마감은 시작일과 종료일이 현재 날짜의 1 일 이내인지 확인하는 것입니다. 그러나 그것은 또한 어제 실행을 완료 한 작업을 고려할 것입니다.
기본적으로 서로 다른 날짜의 작업이 포함되어 있으므로 논리를 파악할 수 없습니다.
사례 1 :
는 여기에 몇 가지 샘플 데이터의 모든 작업이 실행을 완료 한 후 22 분 아침에
TASK_NAME START_DTTM END_DTTM
TASK1 10/21/2013 11:21 PM 10/21/2013 11:58 PM
TASK2 10/21/2013 11:30 PM 10/22/2013 03:58 AM
TASK3 10/22/2013 12:33 AM 10/22/2013 07:58 AM
쿼리 실행 : 작업이 어제 달렸다. 예상 결과 : 모든 작업.
사례 2 : 작업은 (예를 들어 테이블이 END_DTTM DESC로 정렬됩니다) 어제 실행되지 않은이
TASK_NAME START_DTTM END_DTTM
TASK1 10/21/2013 11:21 PM 10/21/2013 11:58 PM
TASK2 10/21/2013 11:30 PM 10/22/2013 03:58 AM
TASK3 10/22/2013 12:33 AM 10/22/2013 07:58 AM
쿼리 10/23의 아침에서 실행된다.
사례 3 (NO 작업이 22 분 밤 & 10/23 이른 아침에에 실행하지 않기 때문에) 모든 작업 : 예상 결과 작업 실행 (테이블이 END_DTTM DESC으로 분류되는 말) :
TASK_NAME START_DTTM END_DTTM
TASK1 10/21/2013 11:21 PM 10/21/2013 11:58 PM
TASK2 10/21/2013 11:30 PM 10/22/2013 03:58 AM
TASK3 10/22/2013 12:33 AM 10/22/2013 07:58 AM
을 오전 3시 22 분에 쿼리가 실행됩니다. 예상 결과 : TASK1
오전 10:22에 쿼리가 실행됩니다. 예상 결과 : TASK1, TASK2
추 신 : 레코드 수는 그리 크지 않기 때문에 성능에 큰 문제는 없습니다. 당신은 당신이 필요 명확히 한 후
가
테이블 스키마와 일부 샘플 데이터 및 예상 결과를 제시하십시오. – OldProgrammer
@OldProgrammer : Done .. – tumchaaditya