Allora ho rivisto la query.

es.:
ora inizio 2200
ora fine 0600 + 2400 = 3000

ora check 0200 + 2400 = 2600 <- ok tra 2200 e 3000
ora check 2100 + 2400 = 4500 <- ok superiore a 3000 viene esclusa
ora check 0700 + 2400 = 3100 <- ok superiore a 3000 viene esclusa

dovrebbe andare cosi':
codice:
WHERE if(TIME_FORMAT(CURTIME(), '%H%m') < data_i,
         TIME_FORMAT(CURTIME(), '%H%m') + 2400,
         TIME_FORMAT(CURTIME(), '%H%m') )

      BETWEEN data_i
      AND IF(data_f < data_i, data_f + 2400, data_f)
dovrebbe essere tutto considerato .





ps.: le ore si "riciclano" e' una espressione aziendale... cioe' ogni giorno ricominciano da capo e quindi non possono fornire valori di comparazione sul giorno.