View Full Version : [SQL] - Sottrazione
Gin&&Tonic
01-03-2011, 10:40
Non ricordo come sottrarre 2 numeri o meglio 2 orari in SQL.
Ho il seguente schema relazionale:
• Evento (Data, Città, Nome)
• Musicista (Nome, Età, Città)
• Partecipazione (Musicista, Evento, OraInizio, OraFine, Ruolo, CompensoOrario)
E devo formulare la seguente interrogazione in SQL:
4) Per ogni musicista, il numero di partecipazioni di durata maggiore di 3 ore (NB: per durata di una partecipazione, si intende la differenza tra l’orario di fine e l’orario di inizio);
Quindi ho fatto questo:
Select P.musicista , count(*)
From Partecipazione P
where ( P.oraFine - P.oraInizio > 3 ore )
Group by P.musicista
il mio problema sta nel sottrarre : oraFine - oraInizio , qualcuno sa aiutarmi?
Grazie :muro: :muro: :muro: :muro: :muro:
Gin&&Tonic
01-03-2011, 10:55
Ragazzi ho un maledetto bisogno del vostro aiuto... :mc:
ho l'esame a breve .......
Stesso mio problema
potresti usare (DATEDIFF (hh, P.oraFine, P.oraInizio))>3 ma a me poi non funziona il confronto con un integer (>,< etc) Non capisco il perchè dato che la funzione ritorna un integer.
Vedi se magari ti va o se da l'errore scrivi come hai corretto perchè il debug di libreoffice è abbastanza criptico sugli errori :(
Gin&&Tonic
01-03-2011, 11:23
ma io sto usando Sql , non mySql , "DateDiff " va bene anche per Sql??
Comunque mi da errore.... sto leggendo un libro intero ma non da un cazz di chiarimento per confrontare due orari ....
Grazie comunque ;)
ma io sto usando Sql , non mySql , "DateDiff " va bene anche per Sql??
Comunque mi da errore.... sto leggendo un libro intero ma non da un cazz di chiarimento per confrontare due orari ....
Grazie comunque ;)
è un comando sql non di mysql prova a stampare il risultato che ti ritorna senza usare il paragone.
A me ritorna i giorni giusti.
Nel caso di Gin&&Tonic datediff non dovrebbe andare bene perchè restituisce la differenza delle componenti data, mentre a te interessa la differenza di orario.
Dovresti quindi usare timediff() (http://dev.mysql.com/doc/refman/5.5/en/date-and-time-functions.html#function_timediff) che ritorna il tipo time. Utilizzando, poi, la funzione hour() estrai come intero le ore di differenza e puoi finalmente verificare se è maggiore o uguale a 3
Nel caso di Gin&&Tonic datediff non dovrebbe andare bene perchè restituisce la differenza delle componenti data, mentre a te interessa la differenza di orario.
Dovresti quindi usare timediff() (http://dev.mysql.com/doc/refman/5.5/en/date-and-time-functions.html#function_timediff) che ritorna il tipo time. Utilizzando, poi, la funzione hour() estrai come intero le ore di differenza e puoi finalmente verificare se è maggiore o uguale a 3
Ma perchè datediff non permette di fare un confronto con degli operatori? Pur leggendo che ritorna un integer?
Non ho qui installato un server mysql per fare delle prove.
Prova a postare la query completa ed eventualmente l'errore che ti viene restituito. Magari il problema sta altrove
Gin&&Tonic
01-03-2011, 13:12
Danel scusa ma non ho capito come dovrei fare : allora io ho questo schema relazionale:
• Evento (Data, Città, Nome)
• Musicista (Nome, Età, Città)
• Partecipazione (Musicista, Evento, OraInizio, OraFine, Ruolo, CompensoOrario)
E devo formulare la seguente interrogazione in SQL:
-Per ogni musicista, il numero di partecipazioni di durata maggiore di 3 ore (NB: per durata di una partecipazione, si intende la differenza tra l’orario di fine e l’orario di inizio);
Ho cosi formulato l'interrogazione:
Select P.musicista , count(*)
From Partecipazione P
where ( P.oraFine - P.oraInizio > 3 ore )
Group by P.musicista
cosa dovrei mettere al posto di " P.oraFine - P.oraInizio > 3 ore" ?
non ho capito come applicare quei "metodi"...
Grazie
Select P.musicista , count(*)
From Partecipazione P
where HOUR ( TIMEDIFF(P.oraFine,P.oraInizio) ) >= 3
Group by P.musicista
Non l'ho provata ma dovrebbe funzionare. Se eventualmente devi escludere gli spettacoli che durano esattamente 3 ore 0 minuti e 0 secondi allora devi aggiungere qualche altra condizione nel where utilizzando le funzioni relative per estrarre i minuti ed i secondi dal campo data
vBulletin® v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.