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
Lascia un commento