Visualizzazione risultati 1 fino 2 di 2

Discussione: Select se il campo è in una certa fascia oraria

  1. #1
    scool non è connesso Neofita
    Data registrazione
    03-06-2015
    Messaggi
    2

    Question Select se il campo è in una certa fascia oraria

    Ciao ragazzi, mi sono imbattuto in un problema che non riesco a superare!
    Devo scrivere un codice php+pdo (o anche mysql/mysqli, non ci son problemi) che mi permetta di selezionare tutte le righe in cui il campo "data_aggiunta" (timestamp, ma posso cambiarlo) sia:
    -compreso tra le 5am di oggi e le 4.59am di domani nel caso in cui l'orario attuale sia tra le 5 am e le 11.59 pm
    -compreso tra le 5am di ieri e le 4.59am di oggi nel caso in cui l'orario attuale sia tra le 00.00am e le 4.59 am

    Specialmente non riesco in alcun modo a risolvere la query
    Riuscite ad aiutarmi??

  2. #2
    mzanella non è connesso AlterGuru
    Data registrazione
    29-12-2015
    Messaggi
    1,954

    Predefinito

    Dovresti ragionare sul criterio di selezione:
    • nel primo caso chiedi che l'orario attuale sia minore o uguale a 11:59 PM, ma questo è un vincolo ridondante (l'orario di qualsiasi giorno è sempre minore od uguale a 11:59 PM)
    • nel secondo caso chiedi che l'orario attuale sia maggiore od uguale a 00:00 AM, ma anche questo è sempre vero

    Quindi in realtà il discriminante è semplicemente:
    Codice:
    if (current_hour >= 5)
    {
        interval = [today 5AM - tomorrow 5AM)
    }
    else {
        interval = [yesterday 5AM - today 5AM)
    }
    Se ci pensi un attimo puoi osservare che a questo punto è più semplice sottrarre 5 ore al timestamp attuale e utilizzare il giorno associato al risultato nel criterio di selezione, incrementandolo di 5 ore:
    Codice:
    interval = [day(now - 5 hours) + 5 hours, day(now - 5 hours) + 5 hours + 1 day)
    A questo punto puoi tradurre questo criterio direttamente in PHP usando le funzioni date e simili, oppure lavorare direttamente con SQL.

    I suggerimenti che do più spesso:


Tags for this Thread

Regole di scrittura

  • Non puoi creare nuove discussioni
  • Non puoi rispondere ai messaggi
  • Non puoi inserire allegati.
  • Non puoi modificare i tuoi messaggi
  •