mysql実装日付フォーマット(date_format)
1734 ワード
私たちは日常のデータ統計でよく「2018-12-12 16:21:12」or「2018-12-12 16:21:12.609000」という時間フォーマットに遭遇しますが、ある日何個のデータ量が発生したかを統計するには、SQLはどう書きますか?本文は皆さんの学習と使用に役立つことを望んでいます.
content
createTime
デバイス
2018-12-10 15:20:20
デバイス
2018-12-11 15:20:21
デバイス
2018-12-11 15:20:22
デバイス
2018-12-12 15:20:23単純に1、2日のデータ量を統計するだけで、文を書くことができ、日付を変更すれば実現できます.mysql実装(その1つの書き方).
次のデータが得られます.
content
2最近の60日間を統計する必要がある場合、毎日のデータ量はいくらですか.どうやって実現しますか.以上のように時間を変更する方法で60+回変更するのでしょうか.もちろん... ではありません
この場合、日付時刻のフォーマット処理が必要になります
メソッド:date_format(sysdate(),’%Y-%m-%d’)
フォーマットされた日付は次のように表示されます.
content
createTime
デバイス
2018-12-10
デバイス
2018-12-11
デバイス
2018-12-11
デバイス
2018-12-12
結果は次のとおりです.
createTime
count
2018-12-10
1
2018-12-11
2
2018-12-12
1
content
createTime
デバイス
2018-12-10 15:20:20
デバイス
2018-12-11 15:20:21
デバイス
2018-12-11 15:20:22
デバイス
2018-12-12 15:20:23
-- 2018-12-11 :
SELECT
count( content ) AS content
FROM
TABLE
WHERE
createTime BETWEEN '2018-12-11'
AND '2018-12-12';
次のデータが得られます.
content
2
-- 2018-12-12 , :
SELECT
content,
createTime,
count( createTime )
FROM
TABLE
WHERE
createTime BETWEEN '2018-12-12'
AND '2018-12-13'
GROUP BY
content,
createTime;
この場合、日付時刻のフォーマット処理が必要になります
メソッド:date_format(sysdate(),’%Y-%m-%d’)
-- “YYYY-MM-DD”
SELECT
content,
date_format( createTime, '%Y-%m-%d' ) AS createTime
FROM
TABLE
WHERE
createTime > '2018-12-10';
フォーマットされた日付は次のように表示されます.
content
createTime
デバイス
2018-12-10
デバイス
2018-12-11
デバイス
2018-12-11
デバイス
2018-12-12
-- sql :
SELECT
a.createTime,
count( a.createTime )
FROM
( SELECT content, date_format( createTime, '%Y-%m-%d' ) AS createTime FROM TABLE WHERE createTime > '2018-12-10' ) a
GROUP BY
a.createTime;
結果は次のとおりです.
createTime
count
2018-12-10
1
2018-12-11
2
2018-12-12
1