Visualizzazione dei risultati da 1 a 4 su 4
  1. #1

    Come Calcolare Le Ore Totali???

    Ho una tabella così creata....

    codice:
    CREATE TABLE IF NOT EXISTS `permessi` (
      `id` int(10) unsigned NOT NULL auto_increment,
      `nome` varchar(255) collate utf8_unicode_ci NOT NULL default '',
      `data_da` date NOT NULL default '0000-00-00',
      `ora_da` time NOT NULL default '00:00:00',
      `data_a` date NOT NULL default '0000-00-00',
      `ora_a` time NOT NULL default '00:00:00',
      `descrizione` varchar(255) collate utf8_unicode_ci default NULL,
      `malattia` tinyint(1) NOT NULL default '0',
      PRIMARY KEY  (`id`),
      KEY `badge` (`nome`)
    ) ENGINE=MyISAM
    in cui salvo le ore di permesso o di ferie...ad esempio supponiamo che Pippo prende dei giorni di permesso dal 17/12/2008 dalle ore 9:00 al 18/12/2008 ore 13.00 ...quindi rientrerebbe in ufficio alle 14.00 dopo la pausa pranzo del 18 ....

    Ora il mio problema è calcolare le ore di permesso il quale sarebbero 8 ore del giorno 17 + 4 ore del giorno 18 quindi in tutto ha preso 12 ore di permesso....

    Esiste un modo per fare questo calcolo direttamente in SQL??? O magari uno script in PHP???

  2. #2
    invece che usare campi distinti per data e ora , usa un campo DATETIME così hai assieme data e ora, tipo

    12-16-2008 11:00:56

    chiamale DATA_DA e DATA_A poi ci puoi usare l'istruzione MySQL DATEDIFF per calcolare le differenze fra due date con la query seguente:

    SELECT DATEDIFF(data_da, data_a) AS diff

    ti restituirà la differenza fra le due date in giorni e ore

    http://dev.mysql.com/doc/refman/5.1/...functions.html

  3. #3
    Originariamente inviato da Emulman
    invece che usare campi distinti per data e ora , usa un campo DATETIME così hai assieme data e ora, tipo

    12-16-2008 11:00:56

    chiamale DATA_DA e DATA_A poi ci puoi usare l'istruzione MySQL DATEDIFF per calcolare le differenze fra due date con la query seguente:

    SELECT DATEDIFF(data_da, data_a) AS diff

    ti restituirà la differenza fra le due date in giorni e ore

    http://dev.mysql.com/doc/refman/5.1/...functions.html
    sì ma il problema è che lui ti fa il calcolo sulle 24 ore e non sulle 8 ore lavorative!!! :master:

  4. #4
    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_da010) == substr($data_a010))
      
    $query "SELECT DATEDIFF('".substr($data_a010)."', '".substr($data_da010)."') 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_da010)." 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_a11)."', '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!!!

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