Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 11
  1. #1
    Utente di HTML.it
    Registrato dal
    Dec 2004
    Messaggi
    208

    [MySql] SELECT date di un periodo

    Salve,

    ho una tabella con 2 campi, uno per data inizio e uno per data fine.

    Vorrei ricavare nella SELECT ogni record per ogni giorno del periodo delle 2 date

    Quindi se io ho data inizio 1/1/2012 e data fine 31/1/2012 avere come risultato della query:

    1 - 2012-1-1
    2 - 2012-1-2
    3 - 2012-1-3
    .....
    .....
    31 - 1 - 2012-1-31

    So esattamente come fare in PHP ma a me serve sapere se è possibile farlo direttamente con MySql

  2. #2
    Moderatore di PHP L'avatar di Alhazred
    Registrato dal
    Oct 2003
    Messaggi
    12,445
    Codice PHP:
    $data_inizio "1/1/2012";
    $data_fine "31/1/2012";

    //riformatti le 2 variabili sopra per adeguarle al formato MySQL aaaa-mm-gg

    $query "SELECT * FROM tabella WHERE campodata BETWEEN $data_inizio AND $data_fine"

  3. #3
    Utente di HTML.it
    Registrato dal
    Dec 2004
    Messaggi
    208
    Originariamente inviato da Alhazred
    Codice PHP:
    $data_inizio "1/1/2012";
    $data_fine "31/1/2012";

    //riformatti le 2 variabili sopra per adeguarle al formato MySQL aaaa-mm-gg

    $query "SELECT * FROM tabella WHERE campodata BETWEEN $data_inizio AND $data_fine"
    Ciao Alhazred, forse non mi sono spiegato bene.

    La tua query filtra il periodo di tutti i record della tabella dove il campodata sia nel range del periodo e questo so già come si fa .

    La mia tabella del database è composta da una solo record con 2 campi che contengono data inizio e data fine

  4. #4
    Utente bannato
    Registrato dal
    Mar 2012
    Messaggi
    35
    ma scusate non basta contare quante righe ci sono e fare un ciclo for?

  5. #5
    Utente di HTML.it
    Registrato dal
    Dec 2004
    Messaggi
    208
    Originariamente inviato da aironeMaxPez
    ma scusate non basta contare quante righe ci sono e fare un ciclo for?
    Giusto, ma come ho scritto all'inizio so come si fa in PHP, a me serve farlo direttamente con MySql.

  6. #6
    Scusa ma non ho capito bene com'è strutturata la tabella, mi puoi fare un esempio concreto?

  7. #7
    Utente di HTML.it
    Registrato dal
    Dec 2004
    Messaggi
    208
    Originariamente inviato da TheBomber999
    Scusa ma non ho capito bene com'è strutturata la tabella, mi puoi fare un esempio concreto?
    La mia tabella database potrebbe essere questa

    id
    data_inizio
    data_fine

    Poi deve essere la SELECT che dovrebbe in teoria, non so, come generare tutte le righe con le date giornaliere.

  8. #8
    Moderatore di PHP L'avatar di Alhazred
    Registrato dal
    Oct 2003
    Messaggi
    12,445
    Codice PHP:
    $data_inizio "1/1/2012";
    $data_fine "31/1/2012";

    //riformatti le 2 variabili sopra per adeguarle al formato MySQL aaaa-mm-gg

    $query "SELECT * FROM tabella WHERE data_inizio >= $data_inizio AND data_fine <= $data_fine"

  9. #9
    Utente di HTML.it L'avatar di _debo
    Registrato dal
    Mar 2012
    residenza
    London, UK
    Messaggi
    858
    Ciao Mixio, non ti servono ne tabelle ne niente ma semplicemente la seguente query:
    Codice PHP:
    SELECT a.date
    FROM 
    (
        
    SELECT curdate() - INTERVAL (a.+ (10 b.a) + (100 c.a)) DAY AS date
        FROM 
    (SELECT 0 AS a UNION ALL SELECT 1 UNION ALL SELECT 2 UNION ALL SELECT 3 UNION ALL SELECT 4 UNION ALL SELECT 5 UNION ALL SELECT 6 UNION ALL SELECT 7 UNION ALL SELECT 8 UNION ALL SELECT 9) AS a
        CROSS JOIN 
    (SELECT 0 AS a UNION ALL SELECT 1 UNION ALL SELECT 2 UNION ALL SELECT 3 UNION ALL SELECT 4 UNION ALL SELECT 5 UNION ALL SELECT 6 UNION ALL SELECT 7 UNION ALL SELECT 8 UNION ALL SELECT 9) AS b
        CROSS JOIN 
    (SELECT 0 AS a UNION ALL SELECT 1 UNION ALL SELECT 2 UNION ALL SELECT 3 UNION ALL SELECT 4 UNION ALL SELECT 5 UNION ALL SELECT 6 UNION ALL SELECT 7 UNION ALL SELECT 8 UNION ALL SELECT 9) AS c
    a
    WHERE a
    .date BETWEEN '2012-03-12' AND '2012-04-12'
    UNION ALL
    SELECT a
    .date
    FROM 
    (
        
    SELECT curdate() + INTERVAL (a.+ (10 b.a) + (100 c.a)) DAY as date
        FROM 
    (SELECT 0 AS a UNION ALL SELECT 1 UNION ALL SELECT 2 UNION ALL SELECT 3 UNION ALL SELECT 4 UNION ALL SELECT 5 UNION ALL SELECT 6 UNION ALL SELECT 7 UNION ALL SELECT 8 UNION ALL SELECT 9) AS a
        CROSS JOIN 
    (SELECT 0 AS a UNION ALL SELECT 1 UNION ALL SELECT 2 UNION ALL SELECT 3 UNION ALL SELECT 4 UNION ALL SELECT 5 UNION ALL SELECT 6 UNION ALL SELECT 7 UNION ALL SELECT 8 UNION ALL SELECT 9) AS b
        CROSS JOIN 
    (SELECT 0 AS a UNION ALL SELECT 1 UNION ALL SELECT 2 UNION ALL SELECT 3 UNION ALL SELECT 4 UNION ALL SELECT 5 UNION ALL SELECT 6 UNION ALL SELECT 7 UNION ALL SELECT 8 UNION ALL SELECT 9) AS c
    a
    WHERE a
    .date BETWEEN '2012-03-12' AND '2012-04-12'
    ORDER BY date

  10. #10
    Utente di HTML.it
    Registrato dal
    Dec 2004
    Messaggi
    208
    @ Alhazred
    Scusami perché insisti? Non è quello che cerco

    @ _debo
    Grazie, potrebbe essere una soluzione. Ora provo.

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2024 vBulletin Solutions, Inc. All rights reserved.