Visualizzazione dei risultati da 1 a 9 su 9
  1. #1
    Utente di HTML.it
    Registrato dal
    Feb 2011
    Messaggi
    15

    MySQL - ricerca periodo e gestione date

    Ciao a tutti,
    ho cercato un po ovunque ma non ho trovato niente al riguardo.
    Devo fare una ricerca in un db sql dove ho un campo data (yyyy.mm.dd hh.mm.ss)
    si tratta di gestire i dati di un ristorante.
    Dovrei raggruppare tutto in base al giorno, visto che si tratta di un ristorante la giornata non deve concludersi alle 23:59 ma più tardi. Avrei pensato alle 8:00 quindi uso questa semplice query:

    SELECT * FROM pagati
    WHERE data_pagati>'$datada 08:00:00' and data_pagati<'$dataa 08:00:00'
    ORDER BY data_pagati ASC

    Tutto funzionante. Ma come mi comporto quando invece di un solo giorno devo visualizzare i risultati di un intero periodo? Ho pensato a questo:

    SELECT *, sum(totale_pagati) as totale_pagati, sum(coperti_pagati) as coperti_pagati
    FROM pagati
    WHERE data_pagati>'$datada 8:00' and data_pagati<'$dataa 8:00'
    GROUP by day(data_pagati)
    ORDER BY data_pagati ASC

    funziona, ma non per l'orario, cioè mi raggruppa i giorni dalle 0:00 alle 23:59, tranne il primo dalle 8:00 e l'ultimo fino alle 8:00 del giorno successivo.
    Posso usare l'estensione interval specificando un orario di inizio e fine giorno? O come altro posso fare??

  2. #2
    Ciao,
    scusa ma se stai interrogando il DB da PHP come si desume da $datada e $dataa...
    perché non fai una query secca e poi ti smazzi la gestione dei pagati nelle varie date con un ciclo PHP???

  3. #3
    Utente di HTML.it
    Registrato dal
    Feb 2011
    Messaggi
    15
    ammazza, e se devo cercare 5-6 mesi gli sparo 200 select?

    .. ma si in effetti che mi frega... tanto è comunque una ricerca....

  4. #4
    ma no che 200 select!!!!
    un sola select che copre 5-6 mesi ( tipo ... WHERE data_pagati BETWEEN '$datada' AND '$dataa')

    poi quando fai
    Codice PHP:
    while($row=mysql_fetch_array($res)) {
         ....
       } 
    guardi se l'ora è tra 0.00 e 8.00 allora il pgamaneto lo sommi alla data del giorno precedente

  5. #5
    Utente di HTML.it
    Registrato dal
    Feb 2011
    Messaggi
    15
    si si, ci sto già lavorando... però pensavo che potevo risolvere direttamente con un comando a mysql, visto che è così completo....

  6. #6
    Utente di HTML.it L'avatar di nman
    Registrato dal
    Jan 2011
    residenza
    Milano
    Messaggi
    1,333
    Io che sono piu "DataBasista" farei
    codice:
     CONVERT (CHAR(8); Data - 0,3333; 112)
    Questa funzione fa 2 cose:
    Ti toglie la parte oraria della DataOra
    Ti detrae 8 ore ( 0.3333 giorni ) alla tua data pertanto fino alle 8 del mattino è ancora ieri

    NB: è fatta con MSSQLServer ma non saprei trasformartela in MySql



    Saluti

  7. #7
    Utente di HTML.it
    Registrato dal
    Feb 2011
    Messaggi
    15
    Anch'io preferirei comandare direttamente il db, ma dopo lunghe ricerche mi tocca arrendermi e lavorare di php

  8. #8
    Utente di HTML.it L'avatar di nman
    Registrato dal
    Jan 2011
    residenza
    Milano
    Messaggi
    1,333
    mahhh!
    mi sembra strano che quela formulina non si possa convertire in MySql.

    Ma ti ripeto non lo conosco e non ce lo ho sotto mano
    altrimenti ci proverei


    Saluti

  9. #9
    Utente di HTML.it
    Registrato dal
    Feb 2011
    Messaggi
    15
    incredibile, ce l'avevo sotto al naso....
    interval
    dopo averlo usato decine di volte non mi era proprio venuto in mente di metterlo in group by

    ----

    SELECT *, sum(totale_pagati) as totale_pagati, sum(coperti_pagati) as coperti_pagati
    FROM pagati
    WHERE data_pagati between '$datada 08:00' and '$dataa 08:00'
    GROUP BY day(data_pagati + interval 8 hour)
    ORDER BY data_pagati ASC

    ---

    grazie comunque a tutti per la disponibilità

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 © 2025 vBulletin Solutions, Inc. All rights reserved.