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 |
'Database > MSSQL' 카테고리의 다른 글
[MSSQL] 서버 수준의 URN 필터가 잘못되었습니다. (Microsoft.SqlServer.Smo) (0) | 2021.02.17 |
---|
최근댓글