from_unixtime - Qué modo para MySQL WEEK() cumple con ISO 8601
time() mysql workbench (3)
¿Qué modo para la función WEEK()
MySQL produce la semana del año ISO 8601 ? El argumento 2 de WEEK()
establece el modo de acuerdo con esta tabla:
+--------------------------------------------------------------------+
| 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 |
+--------------------------------------------------------------------+
¿Alguno de estos modos dará la semana del año ISO 8601?
En la numeración de la semana ISO, el lunes es el primer día de la semana, por lo que solo se reduce a uno de los modos impares.
Hay descripciones mutuamente equivalentes de la semana 01:
- la semana con el primer jueves del año (la definición formal de ISO),
- la semana con 4 de enero en ella,
- la primera semana con la mayoría (cuatro o más) de sus días en el año inicial, y
- la semana que comienza con el lunes en el período del 29 de diciembre al 4 de enero.
La tercera de esas descripciones coincide con "con más de 3 días este año" de la tabla anterior, por lo que ahora hemos reducido a 1 o 3.
Finalmente, todavía de Wikipedia (énfasis añadido):
Si el 1 de enero es lunes, martes, miércoles o jueves, es en la semana 01. Si el 1 de enero es viernes, sábado o domingo, es en la semana 52 o 53 del año anterior (no hay semana 00) .
Por lo tanto, el rango debe ser 1-53, no 0-53. Esto a su vez significa que el modo correcto es el modo 3 .
Para Francia, debe ingresar el archivo /etc/mysql/my.cnf § [Mysqld]: default_week_format = 3
Aviso: no trabaje para AÑO DE EDAD, necesita agregar modo = 3 SELECCIONAR AÑO DE EDAD (CURDADO (), 3)
Pour la France vous devez modifier ou ajouter cette ligne dans le paragraphe [Mysqld] du fichier /etc/mysql/my.cnf: default_week_format = 3 Cela permet à la fonction SEMANA de retourner les vraies numéros de semaines Française . ATENCIÓN PARA LA FUNCIÓN AÑADIR A LA PREGUNTA EL IMPREVISTO FAVORABLE SOBRE EL MODO 3 SELECCIONE EL AÑO DE EDAD (CURDADO (), 3)
Sé que esta pregunta es antigua, pero está bien posicionada en SEO :) Así que solo para que la respuesta sea más completa: al mostrar el año y el número de semana, puedes usar esto:
DATE_FORMAT(your_date_here, "%x-%v")
producirá el número de semana iso para "% v" (1-53) y un número de año correcto para "% x".