Visualizzazione dei risultati da 1 a 6 su 6
  1. #1
    Utente di HTML.it
    Registrato dal
    Jan 2011
    Messaggi
    71

    Filtro range di date select mysql

    Ciao a tutti, vi espongo subito il mio piccolo problema. Sto realizzando un filtro di ricerca tramite range di date, quindi ho un campo data inizio ed un campo data fine che devono filtrare in un campo del database di tipo "timestamp" tra dati come questo "2014-11-22 13:04:01".

    La select che sto utilizzando è questa:
    Codice PHP:
    select from concessionarie WHERE  data >= '$data_inizio_conv' AND data <= '$data_fine_conv' 
    La query funziona, solo che quando vado a selezionare la stessa data in data inizio e data fine, e cioè voglio che mi vengano filtrati i risultati di un singolo giorno, non mi appaiono risultati.

    Anche se dovessi fare:
    Codice PHP:
    select from concessionarie WHERE  data '$data_inizio_conv' 
    quindi una semplice verifica di uguaglianza, la query non funziona.

    Potreste aiutarmi, per piacere, non so davvero come altro fare, ho provato anche con "between" ma niente lo stesso problema.

    Grazie

  2. #2
    Utente di HTML.it L'avatar di clasku
    Registrato dal
    Aug 2006
    Messaggi
    3,197
    Penso che il problema sia legato al fatto che verifica anche l'orario, oltre al giorno
    Devi provare con le funzioni di formattazione delle date, credo

  3. #3
    Utente di HTML.it L'avatar di badaze
    Registrato dal
    Jun 2002
    residenza
    Lyon
    Messaggi
    5,372
    Se nella tabella hai 2014-11-20 11:12:21 e in $data_inizio_conv hai 2014-11-20 00:00:00 non funzionerà a causa dell'ora mentre con il range una data a 00:00:00 è sempre minore delle altre.
    Ridatemi i miei 1000 posts persi !!!!
    Non serve a nulla ottimizzare qualcosa che non funziona.
    Cerco il manuale dell'Olivetti LOGOS 80B - www.emmella.fr

  4. #4
    Utente di HTML.it
    Registrato dal
    Jan 2011
    Messaggi
    71
    E come mi consigliate di procedere?

  5. #5
    Utente di HTML.it L'avatar di clasku
    Registrato dal
    Aug 2006
    Messaggi
    3,197
    prova così
    Codice PHP:
    $data_inizio_conv '2014-07-17';
    $data_fine_conv date("Y-m-d"strtotime($data_inizio_conv " +1 day"));
    $query "SELECT * FROM concessionarie WHERE data >= '$data_inizio_conv' AND data < '$data_fine_conv'"

  6. #6
    Utente di HTML.it
    Registrato dal
    Jan 2011
    Messaggi
    71

    Risolto

    Risolto!! Grazie lo stesso Clasku, ho risolto in una maniera un po più artigianale, vi spiego cioò che ho fatto.
    In pratica il problema era in effetti la parte dell'ora e allora ho fatto così:
    Codice PHP:
    $data_inizio_conv=$data_inizio_conv." 00:00:00";
    $data_fine_conv=$data_fine_conv." 23:59:59"
    ho aggiunto la parte delle ore ad entrambe le date e poi con un semplice if ho verificato se le date coincidono:
    Codice PHP:
    if($data_fine_conv==$data_inizio_conv){
                    
    $query mysql_query("select * from concessionarie WHERE data like '%$data_inizio_conv%' "$connessione);
                }else{
                    
    $query mysql_query("select * from concessionarie WHERE data >='$data_inizio_conv' AND data <='$data_fine_conv'"$connessione);
                } 
    se coindicono la query contiene l'attributo like altrimenti la query rimane la stessa ma ora con il range di date associate anche all'ora funziona tutto bene.

    Grazie ancora ragazzi

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