Visualizzazione dei risultati da 1 a 5 su 5
  1. #1
    Utente di HTML.it
    Registrato dal
    Feb 2006
    Messaggi
    292

    [MySQL] data compresa tra due date

    Ciao ragazzi,
    scusate il gioco di parole ma ho bisogno del vostro aiuto.
    Devo verificare se la data memorizzata in una variabile è compresa tra le date "dal" e "al" del mio DB.

    Codice PHP:
    $date_for_db $anno "/" $mese "/" $giorno//preparo la data per confrontarla con ogni singolo record
        
    $sql mysql_query("select * from (select * from offerte_attr) as oa join (select distinct(id_cam),idst from offerte_attr_cam) as oac on oa.idst=oac.idst where oa.idst='$idh' and (FROM_UNIXTIME(oa.dal,'%Y/%m/%d') <= '$date_for_db' AND FROM_UNIXTIME(oa.al,'%Y/%m/%d') >= '$date_for_db') and oac.id_cam = '$idc'"); 
    Come potete vedere ho utilizzato la funzione FROM_UNIXTIME di MySQL che converte la data memorizzata (formato time) in "Y/m/d".

    Così facendo riesco a visualizzare le date comprese ma si verifica uno strano errore, ecco un esempio:

    ho queste date memorizzate così:

    01/06/2010(in formato time) 30/06/2010(in formato time) pippo

    01/07/2010(in formato time) 10/07/2010(in formato time) pluto


    Se volessi visualizzare tutti i nomi compresi nella data 05/07/2010 visualizzerò "pluto" ed è giusto, ma se metto 12/07/2010 non devo visualizzare nulla e invece mysql mi stampa "pippo". Come mai? Esiste un metodo più pulito per confrontare le date e che mi restituisce i risultati correttamente?

    Grazie

    M4tt86

  2. #2
    Utente di HTML.it L'avatar di nicola75ss
    Registrato dal
    Nov 2004
    Messaggi
    12,922
    Puoi semplificare la clausola usando

    where '$date_for_db' between from_unixtime(inizio,... ) and from_unixtime(fine,...)

    E' strano. Prova a usare il - anzichè / come separatore e nel caso il mese di $date_for_db sia inferiore alla decina a passarglielo in un formato con lo 0 davanti.

  3. #3
    Utente di HTML.it
    Registrato dal
    Feb 2006
    Messaggi
    292
    Ciao nicola75ss,
    ho fatto esattamente tutto quello che mi hai detto m continua a darmi sempre lo stesso problema.

  4. #4
    Utente di HTML.it L'avatar di nicola75ss
    Registrato dal
    Nov 2004
    Messaggi
    12,922
    Fai un pò di debug semplificando le cose fino a quando non risali all'errore.


    select * from offerte_attr_cam where '$data' between from_unixtime(inizio,...) and from_unixtime(fine,...)

  5. #5
    Utente di HTML.it
    Registrato dal
    Feb 2006
    Messaggi
    292
    Ciao nicola75ss,
    ho risolto finalmente il problema, in pratica l'istruzione MySQL delle date era esatta mentre nell'istruzione:
    Codice PHP:
    on oa.idst=oac.idst 
    l'ho modificata così
    Codice PHP:
    on (oa.idst=oac.idst and oa.ido=oac.ido
    e adesso funziona tutto!

    Grazie per la tua disponibilità e per il tuo aiuto

    M4tt86

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.