PDA

View Full Version : [SQL] Calcolo durata tre due valori


*nicola*
16-05-2007, 11:13
Ho una tabella in cui è registrato (in formato datetime) l'ora di inizio e di fine lavoro dei dipendenti ma vorrei creare una query che mi calcoli la durata di ogni turno del dipendente e magari un'altra che me li somma tutti in base alla matricola del lavoratore.

Ho provato con
SELECT DIFFERENCE(DataOraFine, DataOraFine) AS OreLav, Personale.IDPersonale
FROM Orario, Personale

ma mi da come risultato 4 ore di lavoro per tutti i dipendenti (sia che abbiano lavorato o meno quel giorno) quindi c'è qualcosa che non va.
Volendo posso cambiare il formato dell'orario di inizio e di fine se serve basta che sia presente sia la data sia l'ora.

Grazie

0rph3n
16-05-2007, 11:35
ma ti sei guardato perlomeno da documentazione di difference?
usa datediff('hh', DataOraInizio, DataOraFine)

'iao

RaouL_BennetH
16-05-2007, 12:11
Se invece nn hai provveduto a creare due campi per gli orari, intendo:

OraInizio e OraFine ma hai solo un tipo di campo orario, puoi fare anche così:



SELECT DATEDIFF(MAX(orario), MIN(orario)) as totale blablabla

*nicola*
16-05-2007, 12:48
Ho risolto con datediff grazie. Sulle slide del prof non c'era e mi sembrava carino mettere anche qualcosa di nuovo per il progetto da portare all'esame.

Ho un altro dubbio: Devo portare uno script per il popolamento delle tabelle, anzichè ripetere ad ogni riga INSERT VALUES, quando inserisco dati nella stessa tabella (secondo la stessa struttura e lo stesso ordine) posso usare una sola istruzione e poi mettere tutti i dati da inserire?

Faccio un esempio:
Anzichè scrivere
INSERT INTO Orario
VALUES('CarrerA', '05-07-2007 14:00', '05-07-2007 17:00')
INSERT INTO Orario
VALUES('CarnielliA', '05-07-2007 14:00', '05-07-2007 17:00')
INSERT INTO Orario
VALUES('CominA', '05-07-2007 14:00', '05-07-2007 17:00')

Posso fare solamente un elenco dei valori da inserire e scrivere una volta sola INSERT?

0rph3n
16-05-2007, 14:09
Posso fare solamente un elenco dei valori da inserire e scrivere una volta sola INSERT?

in base alla mia misera esperienza, su mysql non ci sono problemi, mentre in sql server 2000 non se puede!
sorry, non ti saprei rispondere circa altri dbms.