MSSQL DB 를 사용하는 시스템에서 일별, 월별 통계를 구할 일이 생겼다.

 

데이터는 아래와 같다.

 

 

사용자 id 가 있고 id 별로 시간대별 count 가 존재한다.

각 사용자들의 일별, 월별 통계를 구하기 위해서 방법을 찾았다.

 

 

일별 통계

  SELECT convert(char(10), start_time, 121) as 'days', 
  		 sum(count) as 'total_count', count(*) as row_count, id
  FROM [SampleDB].[dbo].[T_Sameple] with(nolock)
  group by convert(char(10), start_time, 121), id
  order by convert(char(10), start_time, 121)

 

월별 통계

  SELECT convert(char(7), local_start_time, 121) as 'month', 
 		sum(count) as 'total_count', count(*) as 'row_count', id
  FROM [SampleDB].[dbo].[T_Sameple] with(nolock)
  group by convert(char(7), start_time, 121), id
  order by convert(char(7), start_time, 121)

 

익숙하지 않은 부분들을 정리해보자.

convert(char(10), start_time, 121) start_time 을

2019-08-23 13:39:17.090 과 같이 연-월-일 시-분-초-밀리초로 표현해주며

char(10) 만큼 표시한다.

곧 결과는 2019-08-23 까지가 표시된다.

 

밑에는 마이크로소프트 공식 페이지에서 가져온 포맷 형식이다.

CONVERT(nvarchar, GETDATE(), 23) 를 사용해도 동일한 결과를 가져올 수 있을 것 같다.

 

Format #

예제 쿼리

샘플 결과

0

SELECT CONVERT(nvarchar, GETDATE(), 0)

Aug 23 2019 1:39PM

1

SELECT CONVERT(nvarchar, GETDATE(), 1)

08/23/19

2

SELECT CONVERT(nvarchar, GETDATE(), 2)

19.08.23

3

SELECT CONVERT(nvarchar, GETDATE(), 3)

23/08/19

4

SELECT CONVERT(nvarchar, GETDATE(), 4)

23.08.19

5

SELECT CONVERT(nvarchar, GETDATE(), 5)

23-08-19

6

SELECT CONVERT(nvarchar, GETDATE(), 6)

23 Aug 19

7

SELECT CONVERT(nvarchar, GETDATE(), 7)

Aug 23, 19

8 or 24 or 108

SELECT CONVERT(nvarchar, GETDATE(), 8)

13:39:17

9 또는 109

SELECT CONVERT(nvarchar, GETDATE(), 9)

Aug 23 2019 1:39:17:090PM

10

SELECT CONVERT(nvarchar, GETDATE(), 10)

08-23-19

11

SELECT CONVERT(nvarchar, GETDATE(), 11)

19/08/23

12

SELECT CONVERT(nvarchar, GETDATE(), 12)

190823

13 또는 113

SELECT CONVERT(nvarchar, GETDATE(), 13)

23 Aug 2019 13:39:17:090

14 or 114

SELECT CONVERT(nvarchar, GETDATE(), 14)

13:39:17:090

20 또는 120

SELECT CONVERT(nvarchar, GETDATE(), 20)

2019-08-23 13:39:17

21 or 25 or 121

SELECT CONVERT(nvarchar, GETDATE(), 21)

2019-08-23 13:39:17.090

22

SELECT CONVERT(nvarchar, GETDATE(), 22)

08/23/19 1:39:17 PM

23

SELECT CONVERT(nvarchar, GETDATE(), 23)

2019-08-23

101

SELECT CONVERT(nvarchar, GETDATE(), 101)

08/23/2019

102

SELECT CONVERT(nvarchar, GETDATE(), 102)

2019.08.23

103

SELECT CONVERT(nvarchar, GETDATE(), 103)

23/08/2019

104

SELECT CONVERT(nvarchar, GETDATE(), 104)

23.08.2019

105

SELECT CONVERT(nvarchar, GETDATE(), 105)

23-08-2019

106

SELECT CONVERT(nvarchar, GETDATE(), 106)

23 Aug 2019

107

SELECT CONVERT(nvarchar, GETDATE(), 107)

Aug 23, 2019

110

SELECT CONVERT(nvarchar, GETDATE(), 110)

08-23-2019

111

SELECT CONVERT(nvarchar, GETDATE(), 111)

2019/08/23

112

SELECT CONVERT(nvarchar, GETDATE(), 112)

20190823

113

SELECT CONVERT(nvarchar, GETDATE(), 113)

23 Aug 2019 13:39:17.090

120

SELECT CONVERT(nvarchar, GETDATE(), 120)

2019-08-23 13:39:17

121

SELECT CONVERT(nvarchar, GETDATE(), 121)

2019-08-23 13:39:17.090

126

SELECT CONVERT(nvarchar, GETDATE(), 126)

2019-08-23T13:39:17.090

127

SELECT CONVERT(nvarchar, GETDATE(), 127)

2019-08-23T13:39:17.090

130

SELECT CONVERT(nvarchar, GETDATE(), 130)

22 ذو الحجة 1440 1:39:17.090P

131

SELECT CONVERT(nvarchar, GETDATE(), 131)

22/12/1440 1:39:17.090PM

 

반응형
  • 네이버 블러그 공유하기
  • 네이버 밴드에 공유하기
  • 페이스북 공유하기
  • 카카오스토리 공유하기