martedì 29 settembre 2009

Translator English Italian

MySQL: ottenerre l'inizio/fine settimana a partire da una data

Spesso capita di dover manipolare le date direttamente nelle query SQL.
Ad esempio potrebbe essere necessario determinare la data di inizio/fine settimana a partire da una data o dal numero della settimana.
Fra le funzioni che MySql mette a disposizione, non ce ne sono che fanno al nostro caso.
In ogni modo è relativamente semplice ottenere questi valori:

SELECT
DATE_ADD(mydate, INTERVAL(2-DAYOFWEEK (mydate)) DAY) AS startWeek,
DATE_ADD(mydate, INTERVAL(8-DAYOFWEEK (mydate)) DAY) AS endWeek

FROM
mytable


Come funziona? La funzione DAYOFWEEK restituisce un intero compreso fra 1 (domenica) e 7 (sabato). Quindi, ad esempio se mydate è martedi DAYOFWEEK restituisce 3 ottenendo il seguente statement:
DATE_ADD(mydate, INTERVAL -1 DAY) AS startWeek

che sostanzialmente sottrae 1 a mydate ottenendo la data di inizio settimana (martedi-1=lunedì) e:
DATE_ADD(mydate, INTERVAL 5 DAY) AS endWeek
che restituisce la data di fine settimana (martedi+5=domenica).

Nessun commento:

Posta un commento