질문Q #8360
MS SQL 최근 몇일전 일자별 합계 쿼리.
들국화2015-08-27 11:30:48
오늘, 어제 날자를 가져오는 쿼리.
DECLARE @yesterday char(10) = convert(varchar(10),dateadd(d,-1,GETDATE()),121)
DECLARE  @tomorrow char(10) = convert(varchar(10),dateadd(d,+1,GETDATE()),121)

오늘부터 5일전 까지의 날짜별 가입자수 쿼리 입니다.
Select DATEPART(yy, [joinDate]) as year, DATEPART(mm, [joinDate]) as month, DATEPART(dd, [joinDate]) as day, count([idx]) cnt
From lMemberInfo
where [joinDate]>= convert(varchar(10),dateadd(d,-5,GETDATE()),121)
group by  DATEPART(yy, [joinDate]),  DATEPART(mm, [joinDate]), DATEPART(dd, [joinDate])
order by DATEPART(yy, [joinDate]) desc,  DATEPART(mm, [joinDate]) desc, DATEPART(dd, [joinDate]) desc

위쿼리가 안맞을것 같아서 수정했습니다.
Select convert(varchar(10),[joinDate],121), count([idx]) cnt
From tblMemberInfo
where [joinDate]>= convert(varchar(10),dateadd(d,-500,GETDATE()),121)
group by  convert(varchar(10),[joinDate],121)
order by convert(varchar(10),[joinDate],121) 
답변6
#1 한대승(불의회상) 2015-08-27 14:02:31
좋은 정보 감사 합니다. ^^
#2 들국화 2015-08-27 14:48:00
한대승// 좋은정보 맞나요?
요즘 MS 제품들을 다루는데.. 매번 MySQL만하다 다른 형태라 다음에 또 찾을것 같아서 적어봤습니다.^^
#3 한대승(불의회상) 2015-08-27 15:16:34
좋은 정보 맞습니다.
MSSQL을 안쓰니 이런 정보들이 있으면 이후 작업하기가 수월 하잖아요.
MYSQL을 벗어나고 싶어도 환경이 여의치 않아서.. ^^
이전엔 오라클로만 주구장창 작업 했었는데....
#4 kaido 2015-08-27 16:59:27
유독 날짜 관련해서 mssql 이 정말 많은 형태의 정보를 제공 하고 있습니다.

그런데 이 아이는 치명적인 불편함이 있습죠.

바로 그룹바이가 mysql 처럼 사용이 안됌. 망함.
#5 들국화 2015-08-27 17:22:59
kaido// 맞습니다. 그런데 그것도 다 넣어주면 문제가 없는듯 합니다.
그래도 상용이라 MySQL보다는 쿼리가 자유롭네요.

그것보다 하다보니 페이징이 좀 이상하더라구요. 
실행계획은 자세히 보지는 않았지만... rowid 만들어서 하는 형태로 되는것 같네요.
#6 들국화 2015-08-28 10:51:48
위 쿼리가 안맞을수 있을것 같아서 다시 수정 했습니다.
 
Select convert(varchar(10),[joinDate],121), count([idx]) cnt
From tblMemberInfo
where [joinDate]>= convert(varchar(10),dateadd(d,-5,GETDATE()),121)
group by  convert(varchar(10),[joinDate],121)
order by convert(varchar(10),[joinDate],121)