Visualizzazione dei risultati da 1 a 6 su 6
  1. #1
    Utente di HTML.it L'avatar di wino_7
    Registrato dal
    Dec 2006
    Messaggi
    537

    [MySql] Intervallo tra date compresi orari

    Salve a tutti ho una tabella fatta in questo modo :
    Codice PHP:
    CREATE TABLE appuntamenti (

      
    id INT UNSIGNED AUTO_INCREMENT,

      
    data DATE NOT NULL,

      
    ora TIME NOT NULL,

      
    durata TIME NOT NULL,

      
    luogo VARCHAR(150NOT NULL,

      
    nome VARCHAR(100NOT NULL,

      
    cognome VARCHAR(100NOT NULL,

      
    PRIMARY KEY (id)

    ENGINE=InnoDB
    Quando inserisco un nuovo appuntamento devo controllare che già non ce ne sia uno in quella data e in quell'orario tenendo conto anche della durata dell'appuntamento.

    Mi sto scervellando non riesco proprio a farla.

  2. #2
    Utente di HTML.it L'avatar di nicola75ss
    Registrato dal
    Nov 2004
    Messaggi
    12,922
    codice:
    select * from appuntamenti 
    where '2010-08-31 09:00:00' < addtime(concat(data,' ',ora),durata) 
    and '2010-08-31 10:00:01' > concat(data,' ',ora)
    Nel mio esempio '2010-08-31 09:00:00' è la data/ora d'inizio del nuovo appuntamento che vorresti fissare che confronti con l'orario di fine di quelli già inseriti mentre '2010-08-31 10:00:01' è l'orario di fine dell'ipotetico appuntamento che verifichi sia minore di quello di inizio di quelli già esistenti.

    Se non vengono restituiti record non ci sono sovrapposizioni, in caso contrario sì.
    Cerca su google "mysql time overlap" se ti servono altri dettagli.

  3. #3
    Utente di HTML.it L'avatar di wino_7
    Registrato dal
    Dec 2006
    Messaggi
    537
    Sicuro che funziona ?
    Mi sembra strano perchè nel campo data DATE NOT NULL, non c'è l'orario ma solo la data in questo formato 2010-12-12, mentre gli orario li memorizzo con questo formato nel campo ora e durata 12:00:00 .

  4. #4
    Utente di HTML.it L'avatar di nicola75ss
    Registrato dal
    Nov 2004
    Messaggi
    12,922
    Ho adeguato la query ai tipi di campo che hai scelto, concatenando data e ora e usando la funzione addtime() per calcolare l'orario di fine appuntamento.

    Invece di chiedermi se son sicuro fai prima a provare tu stesso.

  5. #5
    Utente di HTML.it L'avatar di wino_7
    Registrato dal
    Dec 2006
    Messaggi
    537
    Si hai ragione, ma non riesco a provarla perchè non la riesco ad adattare a questa funzione.

    codice:
    public boolean verificaAppuntamento(String data, String ora, String durata) {
    
            ResultSet r;
    
            try {
                sAppuntamenti = c.createStatement();
                r = sAppuntamenti.executeQuery("");
    
    
                if(r.next()) {
                    return true;
                }
    
                r.close();
    
                return false;
    
            } catch (SQLException e) {
                return false;
            }
        }

  6. #6
    Utente di HTML.it L'avatar di nicola75ss
    Registrato dal
    Nov 2004
    Messaggi
    12,922
    Qui se inizi a postare codice php sei off-topic.
    La logica te l'ho spiegata. Se hai problemi sul come realizzarla posta nella sezione apposita.

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