Pagina 1 di 3 1 2 3 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 21
  1. #1

    MySql query con intervalli di tempo .

    Salve a tutti mi chiamo Valerio, sto avendo problemi per una richiesta MySql che ha come clausola di selezione un intervallo tra due orari.

    per esempio avendo una tabella con la seguente struttura:


    | id | nome | timeOn | timeOff |
    -------------------------------------------------
    | 1 | elem1 | 19.00.00 | 23.00.00 |
    | 2 | elem2 | 23.00.00 | 03.00.00 |


    ora vorrei creare una “query” dove venga richiamato l’elemento in base al solo orario in cui viene visualizzata la pagina.

    quindi la “query” dovrebbe avere una clausola “WHERE” in cui l’elemento viene selezionato in base al suo orario di inizio (timeOn) e suo orario di fine (timeOff).

    se tutti gli elementi della tabella avessero i valori di timeOn minori rispetto ai valori di timeOff, come per esempio l’elemento 1 utilizzerei una “query” simile a questa:
    codice:
    $oraAttuale= “ora attuale formattata 12:30:45”
    (SELECT nome FROM tabella WHERE timeOn >= $oraAttuale AND timeOff <= $oraAttuale)
    la “query” appena espressa non funzionerebbe però con l’elemento 2 che ha il valore di timeOn maggiore rispetto a quello di timeOff.

    Come potrei costruire una “query” che supporti entrambi i casi?
    Ciao Grazie
    Valerio

  2. #2
    Aggiungi la data corrente _ solo anno mese e giorno_ a timeon e timeoff.
    Aggiungi anche he 1 giorno alla data di timeoff se è minore della rispettiva di timeon

    HTH

  3. #3
    Ciao sspinutx grazie per la risposta, se ho capito correttamente il tuo consiglio dovrei associare una data all'ora sia per il timeOn che per il timeOff però in questo modo ogni elemento avrebbe validità solo nella data assegnata, giusto?
    Se la mia affermazione è corretta questo metodo non andrebbe bene per il mio scopo perchè volevo fare in modo che gli orari di on e off fossero svincolati da una qualsiasi data.
    Ciao grazie

  4. #4
    La data va associata nella. Query non nella tabella

  5. #5
    non puoi svincolare le ore dalle date, altrimenti non riesci a gestire i periodi a cavallo della mezzanotte (oltre a essere non corretto: in generale a me interessa sapere quel tale periodo a quale giorno di riferisce)

  6. #6
    Ciao a tutti e grazie per le risposte, ora il da farsi mi si presenta più chiaro sotto il punto di vista logico e ho provato a creare la seguente query , per ora sembra funzionare correttamente finche la condizione timeOn < timeOff risulti vera e aspetto la notte per verificare la condizione falsa.
    codice:
    SELECT  *  FROM tabella  
    WHERE timeOn <= NOW() 
    AND IF( timeOn < timeOff, 
                    timeOff >= NOW(),
                    timeOff >= NOW() + INTERVAL 1 DAY)
    Grazie per l’attenzione e sono sempre aperto ad eventuali consigli .
    Ciao Valerio.

  7. #7
    Ciao a tutti, mi devo rimangiare quello che ho detto prima dopo alcune prove ho notato che gli elementi con timeOn maggiore rispetto a timeOff non vengono presi in cosiderazione nella "query".
    Qualche consigio?
    Ciao Grazie
    Valerio

  8. #8
    Non mi sembra corretta

  9. #9
    Quote Originariamente inviata da sspintux Visualizza il messaggio
    Non mi sembra corretta
    Quando si parla di associare la data attuale al timeon o timeoff si intende
    Costruire la data formata da giorno, mese, anno della data attuale e ore, minuti e sec dei due time

  10. #10
    la tua tabella deve diventare

    | id | nome | timeOn | timeOff |
    -------------------------------------------------------------------
    | 1 | elem1 | 20/09/2018 19.00.00 | 20/09/2018 23.00.00 |
    | 2 | elem2 | 20/09/2018 23.00.00 | 21/09/2018 03.00.00 |

    solo così potrai interrogarla correttamente

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.