MySQLの WEEK()
関数のどのモードが ISO 8601年間の週 を生成しますか? WEEK()
の引数2は、このチャートに従ってモードを設定します。
+--------------------------------------------------------------------+
| Mode | First day of week | Range | Week 1 is the first week ... |
|------+-------------------+-------+---------------------------------|
| 0 | Sunday | 0-53 | with a Sunday in this year |
|------+-------------------+-------+---------------------------------|
| 1 | Monday | 0-53 | with more than 3 days this year |
|------+-------------------+-------+---------------------------------|
| 2 | Sunday | 1-53 | with a Sunday in this year |
|------+-------------------+-------+---------------------------------|
| 3 | Monday | 1-53 | with more than 3 days this year |
|------+-------------------+-------+---------------------------------|
| 4 | Sunday | 0-53 | with more than 3 days this year |
|------+-------------------+-------+---------------------------------|
| 5 | Monday | 0-53 | with a Monday in this year |
|------+-------------------+-------+---------------------------------|
| 6 | Sunday | 1-53 | with more than 3 days this year |
|------+-------------------+-------+---------------------------------|
| 7 | Monday | 1-53 | with a Monday in this year |
+--------------------------------------------------------------------+
これらのモードの1つは、ISO 8601の週を与えますか?
ISO週番号付けでは、月曜日が週の最初の日なので、それだけで奇数番号モードのいずれかに絞り込みます。
01週の相互に同等の説明があります。
- 年の最初の木曜日が含まれる週(正式なISO定義)、
- 1月4日の週
- 初年度の日数の過半数(4日以上)を含む最初の週、および
- 12月29日から1月4日までの月曜日から始まる週。
これらの説明の3番目は、上の表の「今年は3日以上」と一致するため、1または3に絞り込みました。
最後に、まだウィキペディアから(強調を追加):
1月1日が月曜日、火曜日、水曜日、または木曜日の場合は01週目です。1月1日が金曜日、土曜日、または日曜日の場合は、前年の52週目または53週目(00週はありません)。
したがって、範囲は0-53ではなく1-53でなければなりません。これは、正しいモードがmode 3であることを意味します。
私はこの質問が古いことを知っていますが、それはSEOの位置付けが適切です:)答えをより完全にするために-年と週の番号を表示する場合、これを使用できます:
DATE_FORMAT(your_date_here, "%x-%v")
"%v"(1-53)の等週番号と "%x"の正しい年番号を生成します。
フランスの場合、ファイル/etc/mysql/my.cnf§[Mysqld]に次のように入力する必要があります:default_week_format = 3
注意:YEARWEEKでは機能しません。追加モードが必要です= 3 SELECT YEARWEEK(CURDATE()、3)
Pour la France vous devez modifier ou ajouter cette ligne dans le paragraphe [Mysqld] du fichier /etc/mysql/my.cnf:default_week_format = Cela permetàla fonction [〜#〜 ]週[〜#〜] de retourner les vraiesnumérosde semainesFrançaise。 YEARWEEK il fautimpérativementajouter le modeà3 SELECT YEARWEEK(CURDATE()、3)に注意してください。