Query SQL per ottenere l'ultimo giorno di ogni settimana


8

Usando MySQL, devo interrogare una tabella che ha un campo datetime. Devo contare tutti i record per una settimana particolare. L'uso di date_format (colname, "% Y% V") restituisce la settimana #, ma ho bisogno dell'ultimo giorno (giorno del mese 01-28 | 29 | 30 | 31) per quella settimana.

Uscita ad es

    COUNT (*) | L'appuntamento
    11 | 2012-01-07
    22 | 2012-01-14
    123 | 2012-01-21

Aiuto?

Nota: l'ultimo giorno della settimana nel mio caso è domenica.

Risposte:


12

È necessario utilizzare la funzione DAYOFWEEK

Se la fine della settimana di sabato, qualsiasi data può essere trasformata in un sabato.

Ad esempio, questo calcola il prossimo sabato

SELECT DATE(NOW() + INTERVAL (7 - DAYOFWEEK(NOW())) DAY);

Questo calcola la prossima domenica (devi invece usare la funzione WEEKDAY )

SELECT DATE(NOW() + INTERVAL (6 - WEEKDAY(NOW())) DAY); 

Per una tabella chiamata mytable con una colonna Date denominata Data, la somma sarebbe

Sabato

SELECT COUNT(1) DateCount,EndOfWeekDate FROM
(
    SELECT DATE(theDate + INTERVAL (7 - DAYOFWEEK(theDate)) DAY) EndOfWeekDate
    FROM mytable
) A GROUP BY EndOfWeekDate;

Domenica

SELECT COUNT(1) DateCount,EndOfWeekDate FROM
(
    SELECT DATE(theDate + INTERVAL (6 - WEEKDAY(theDate)) DAY) EndOfWeekDate
    FROM mytable
) A GROUP BY EndOfWeekDate;

Provaci !!!

CAVEAT se vuoi un'altra fine settimana diversa da sabato e domenica, ho scritto un algoritmo folle nel 22 settembre 2011 per calcolare ogni settimana iniziando e terminando in qualsiasi giorno .


Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.