vero...quindi penso che bisogna distinguere i casi e fare degli if.
Se giorno_da e giorno_a coincidono allora basta fare solo un DATEDIFF; ma se data_a è maggiore di data_da allora occorre fare un altro calcolo. quindi, in PHP (supponendo che mantieni nello stesso campo data e ora):
Codice PHP:
// preleva la data
if (substr($data_da, 0, 10) == substr($data_a, 0, 10))
$query = "SELECT DATEDIFF('".substr($data_a, 0, 10)."', '".substr($data_da, 0, 10)."') AS diff";
else {
// questa query calcola quante ore mancano alla fine dell'orario di lavoro giornaliero
// supponendo che si finsica di alvorare alle 17
$query = "SELECT DATEDIFF('".substr($data_da, 0, 10)." 17:00:00', '".$data_da."') AS primaDiff";
// esegui la query e avrai il risultato nella variabile, ad esempio, $primaDiff
// ora esegui la seconda query, che calcola la differenza in ore fra l'orario di entrata e l'inizio del lavoro alle 9
$query = "SELECT DATEDIFF('2008-12-17 ".substr($data_a, 11)."', '2008-12-17 09:00:00') AS secondaDiff";
// esegui la query e avrai il risultato nella variabile, ad esempio, $secondaDiff
// sottrae le due variabili epr avere le ore e i minuti
$query = "SELECT SUBTIME($secondaDiff, $primaDiff) AS diff";
// esegui la query e avrai il risultato nella variabile, ad esempio, $diff
}
più o meno penso dovrebeb bastare..mi auguro!!!