の両方を使用できますYEAR(タイムスタンプ)
および WEEK(timestamp )
、および SELECT
でこれらの式の両方を使用します およびGROUPBY
条項。
過度にエレガントではありませんが、機能的です...
もちろん、これら2つの日付部分を1つの式に組み合わせることができます。つまり、
SELECT CONCAT(YEAR(timestamp), '/', WEEK(timestamp)), etc...
FROM ...
WHERE ..
GROUP BY CONCAT(YEAR(timestamp), '/', WEEK(timestamp))
編集 :Martin 指摘
YEARWEEK(mysqldatefield)
関数ですが、その出力は上記の長い式ほど目に優しいものではありません。
編集2 [3年半後!]:
YEARWEEK(mysqldatefield)
オプションの2番目の引数(mode
)0または2に設定すると、完全で集計するのにおそらく最適な方法です。 それが望ましい場合は、数週間(つまり、1月1日にまたがる週を含む)。 YEAR()/ WEEK()
この回答で最初に提案されたアプローチには、そのような「またがる」の集計データを分割する効果があります。 2週間に1週間:1週間は前年度、もう1週間は新年。
会計などでは、多くの場合、両端に1週間ずつ、最大2週間かかるという犠牲を払って、毎年クリーンカットが望まれます。そのために、 YEAR()/ WEEK()
アプローチの方が優れています。