Visualizzazione dei risultati da 1 a 6 su 6
  1. #1
    Utente di HTML.it
    Registrato dal
    Jul 2005
    Messaggi
    909

    [mysql] query tra record

    salve,
    dovrei recuperarmi alcuni record da una tabella dove la condizione è che la data richiesta sia maggiore di quella memorizzata.

    faccio un piccolo esempio:

    ID DAL
    1 2012-11-02 *
    2 2012-10-02
    3 2012-12-02
    4 2012-11-02 *
    5 2012-09-02

    $data_richiesta = 2012-11-05

    la query in queste condizioni mi dovrebbe restituire "solo" i record 1 e 4 (ovvero i record richiesti sono compresi tra 2012-11-02(DAL) e 2012-10-02 (AL))

    purtroppo non ho un campo "AL" in modo da poter fare una query del tipo:

    SELECT * FROM xxx WHERE dal<='$data_richiesta' AND al >='$data_richiesta'

    il campo "AL" sarebbe lo stesso "DAL" di un altro record



    Spero possiate aiutarmi,

    Grazie

  2. #2
    in base a quale ragionamento *umano* se chiedo "2012-11-05" estraggo i record con data tra 2012-11-02 e 2012-10-02 ???

  3. #3
    Utente di HTML.it
    Registrato dal
    Jul 2005
    Messaggi
    909
    Originariamente inviato da optime
    in base a quale ragionamento *umano* se chiedo "2012-11-05" estraggo i record con data tra 2012-11-02 e 2012-10-02 ???
    per semplicità se avessi avuto:

    ID DAL AL
    1 2012-11-02 2012-12-02
    2 2012-10-02 2012-11-02
    3 2012-09-02 2012-10-02
    4 2012-08-02 2012-09-02

    con una query del tipo:

    SELECT * FROM xxx WHERE dal<='2012-11-05 AND al >='2012-11-05'

    mi sarei estratto il record con ID 1 "semplicemente" perchè la mia data è maggiore del "DAL" e minore del "AL"

    Ora, come ho scritto in precedenza, non ho nessun "AL", il ragionamento umano potrebbe essere:

    seleziona la data più "vicina" a quella richiesta ma minore (non solo minore)


    Grazie

  4. #4
    ok. allora con DateDiff tra la tua data di riferimento e le date della tabella, trovi quella col numero (assoluto) più basso

  5. #5
    Utente di HTML.it
    Registrato dal
    Jul 2005
    Messaggi
    909
    il concetto credo sia giusto ma nello specifico come faccio a fare una query con datediff se io ho solo una data?

    codice:
    $dati = mysql_query("SELECT * FROM XXX");
    WHILE($row = mysql_fetch_array($dati)){
    
    $data_db = $row[dal];
    
    SELECT DATEDIFF('2012-11-05','$data_db ') AS DiffDate
    
    }

    dovrebbe essere cosi?

    grazie ancora

  6. #6
    che vuol dire "se ho solo una data"? ti bastano la data del db e quella che imposti tu (e comunque sono due!)

    comunque

    SELECT ABS(MIN(DATEDIFF('2012-11-05','$data_db '))) FROM Tabella

    ti dà la differenza minima assoluta

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.