테이블에 DATETIME형식의 필드가 있습니다.
특정의 데이터를 날짜별로 가져와야하는데...
기준시각이 05시를 기준으로 익일 05시 까지를 1일 단위로 묶어야
합니다.
예제 쿼리 올리겠습니다.
아래 쿼리를 이용할경우 2일 이상의 데이터를 가져오는 경우 시작일
5시부터 마지막일 5시까지 다 가져와버립니다..
이 쿼리를 하위쿼리로 해서 다시 쿼리를 묶어야 하는지..아니면 다른
방법이 있는지 고수님들 도움 좀 부탁드립니다.
SELECT a.CS_USER_ID,convert(varchar(13),a.CS_EVENT_DATETIME,120)
as 'dates' FROM CS_ATTENDANCE_LOG a,CS_USER_INFO b
WITH(NOLOCK)
WHERE a.CS_Event_Datetime between
dbo.str2datetime('20040801','050000') and
dbo.str2datetime(convert(varchar(8),dateadd(day,1,'20040831'),112),'050000')
and b.CS_User_Id = a.CS_USER_ID and
(b.CS_Join_Date<='20040831' or b.CS_Join_Date='' or
b.CS_Join_Date is null)
and
(b.CS_Retire_Date<='20040831' or b.CS_Retire_Date='' or
b.CS_Retire_Date is null)
and
(b.CS_Retire_Date>='20040801' or b.CS_Retire_Date='' or
b.CS_Retire_Date is null)
GROUP BY
a.CS_USER_ID,convert(varchar(13),a.CS_EVENT_DATETIME,120)
|