ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 로그인 로그아웃 한행으로 관리 될 경우 범위조회
    SQL Server/Query 2013. 6. 7. 21:14

    로그인과 로그아웃이 한행으로 있을 경우에 범위 검색할 때 데이터 추출하는 방법입니다.


    데이터는 아래로 구성되어 있으며, 검색 조건은 10시 ~ 16시 일때.. 여기에 해당되는 데이터가 추출되는 방법입니다.

    일종의 선분처리 쿼리라고 보실 수 있죠.


    아래는 데이터이고, 빨간색은 결과로 반환될 데이터입니다.

    9시 ~ 9시반

    9시 ~ 10시

    9시 ~ 13시

    10시 ~ 16시

    11시 ~ 14시

    12시 ~ 18시

    18시 ~ 20시

    3시 ~ 20시



    쿼리 조건은

    LogoutDate > 10시보다 큰 경우면 ... 6개의 행이 리턴됩니다.

    9시 ~ 13시

    10시 ~ 16시

    11시 ~ 14시

    12시 ~ 18시

    18시 ~ 20시

    3시 ~ 20시


    여기서 and 조건으로 LoginDate <= 16시라고 주는 경우에는..

    9시 ~ 13시

    10시 ~ 16시

    11시 ~ 14시

    12시 ~ 18시


    이렇게 4개만 추출되는 방식입니다.


    쿼리는 아래와 같습니다.

    감사합니다. ^^


    작성일: 2013-06-07

    작성자: 이스트럭(강동운)



    IF OBJECT_ID('tblDate','U') IS NOT NULL DROP TABLE tblDate GO CREATE TABLE tblDate ( LoginDate DATETIME , LogoutDate DATETIME ) GO

    INSERT INTO dbo.tblDate VALUES('2013-06-07 03:00:00','2013-06-07 20:00:00') INSERT INTO dbo.tblDate VALUES('2013-06-07 09:00:00','2013-06-07 09:30:00') INSERT INTO dbo.tblDate VALUES('2013-06-07 09:00:00','2013-06-07 10:00:00') INSERT INTO dbo.tblDate VALUES('2013-06-07 09:00:00','2013-06-07 13:00:00') INSERT INTO dbo.tblDate VALUES('2013-06-07 10:00:00','2013-06-07 16:00:00') INSERT INTO dbo.tblDate VALUES('2013-06-07 11:00:00','2013-06-07 14:00:00') INSERT INTO dbo.tblDate VALUES('2013-06-07 12:00:00','2013-06-07 18:00:00') INSERT INTO dbo.tblDate VALUES('2013-06-07 18:00:00','2013-06-07 20:00:00') GO DECLARE @StartDatetime DATETIME = '2013-06-07 10:00:00' , @EndDateTime DATETIME = '2013-06-07 16:00:00' SELECT (CASE WHEN LoginDate < @StartDatetime AND LogoutDate <= @EndDateTime THEN DATEDIFF(MI, @StartDatetime, LogoutDate) WHEN LoginDate < @StartDatetime AND LogoutDate >= @EndDateTime THEN DATEDIFF(MI, @StartDatetime, @EndDateTime) WHEN LoginDate >= @StartDatetime AND LogoutDate <= @EndDateTime THEN DATEDIFF(MI, LoginDate, LogoutDate) WHEN LoginDate >= @StartDatetime AND LogoutDate >= @EndDateTime THEN DATEDIFF(MI, LoginDate, @EndDateTime) END) , * FROM tblDate WHERE LogoutDate > @StartDatetime AND LoginDate <= @EndDateTime

    ㅁㄴ ㅇㅁㄴㅇ ㅁㄴㅇ ㅁㄴㅇ


Designed by Tistory.