⏰
SQL ServerでFORMAT関数を使って期間ごとのデータを集計する
SQL ServerでFORMAT関数を使って日間・時間・分間・秒間ごとのデータを抽出します。
CONVERTを使う方法や、DATEDIFFとDATEADDを駆使する方法などもありますが、今回はFORMATを使う方法を紹介します。
日間
SELECT
COUNT(*) AS CNT
,FORMAT(timestamp, 'yyyy-MM-dd') AS '日間'
FROM sample_table
WHERE timestamp BETWEEN @StartDateTime AND @EndDateTime
GROUP BY FORMAT(timestamp, 'yyyy-MM-dd')
ORDER BY FORMAT(timestamp, 'yyyy-MM-dd')
抽出例
CNT | 日間 |
---|---|
10435 | 2021-01-01 |
12587 | 2021-01-02 |
9938 | 2021-01-03 |
時間
SELECT
COUNT(*) AS CNT
,FORMAT(timestamp, 'yyyy-MM-dd HH') AS '時間'
FROM sample_table
WHERE timestamp BETWEEN @StartDateTime AND @EndDateTime
GROUP BY FORMAT(timestamp, 'yyyy-MM-dd HH')
ORDER BY FORMAT(timestamp, 'yyyy-MM-dd HH')
抽出例
CNT | 時間 |
---|---|
1305 | 2021-03-01 01 |
1023 | 2021-03-01 02 |
1189 | 2021-03-01 03 |
分間
SELECT
COUNT(*) AS CNT
,FORMAT(timestamp, 'yyyy-MM-dd HH:mm') AS '分間'
FROM sample_table
WHERE timestamp BETWEEN @StartDateTime AND @EndDateTime
GROUP BY FORMAT(timestamp, 'yyyy-MM-dd HH:mm')
ORDER BY FORMAT(timestamp, 'yyyy-MM-dd HH:mm')
抽出例
CNT | 分間 |
---|---|
129 | 2021-03-01 01:00 |
105 | 2021-03-01 01:01 |
97 | 2021-03-01 01:02 |
秒間
SELECT
COUNT(*) AS CNT
,FORMAT(timestamp, 'yyyy-MM-dd HH:mm:ss') AS '秒間'
FROM sample_table
WHERE timestamp BETWEEN @StartDateTime AND @EndDateTime
GROUP BY FORMAT(timestamp, 'yyyy-MM-dd HH:mm:ss')
ORDER BY FORMAT(timestamp, 'yyyy-MM-dd HH:mm:ss')
抽出例
CNT | 秒間 |
---|---|
11 | 2021-03-01 01:00:00 |
16 | 2021-03-01 01:00:01 |
18 | 2021-03-01 01:00:02 |
Discussion