.: HosiriS :.

Informatica e non solo

Determiniamo la settimana del mese con SQL

Posted by hosiris su ottobre 6, 2011

Spesso è conveniente far eseguire al codice SQL molte delle operazioni di raggruppamento, specie se si gioca con le date, infatti il set di funzioni sulle date offerto da MySQL è notevole e molto potente.

Purtroppo gli sviluppatori hanno tralasciato una funzione che, secondo me, ha una certa importanza: la possibilità di conoscere la settimana del mese di una determinata data.
Ma giocando con le altre funzioni possiamo costruirne una che ci dia questa possibilità.

Il codice non è molto complesso:


SELECT
  WEEK(date,5)-WEEK(DATE_SUB(date, INTERVAL DAYOFMONTH(date)-1 DAY),5)+1 weekofmonth

e ci restiusce un numero da 1 a 5.

Innanzitutto prendiamo il numero della settimana (in base all’anno) della data specificata

WEEK(date,5)

il secondo parametro serve ad indicare che la settimana inizia di lunedì.
Successivamente prendiamo il numero del giorno del mese:

DAYOFMONTH(date)

Il valore appena calcolato verrà usato in DATE_SUB per determinare la data del primo giorno del mese (dummy), ma che ci permetterà di calcolare il numero della settimana (su base annua) del primo giorno del mese:

DATE_SUB(date, DAYOFMONTH(date)-1 DAY)

Per cui sottraendo tutto otteniamo il risultato richiesto:

WEEK(date,5)-WEEK(DATE_SUB(date, INTERVAL DAYOFMONTH(date)-1 DAY),5)+1

Buon divertimento

FONTE ORIGINALE

Lascia un commento