Visualizzazione dei risultati da 1 a 4 su 4
  1. #1

    SQL: Selezione per data (problemi nel formato/sintassi)

    Salve a tutti,
    sto facendo una funzione per trovare alcuni items correlati, che siano entro un certo periodo dalla data del item di riferimento:

    Riga 1: "parole chiave", "data1"
    ..
    Riga n: "parole chiave", "dataN"

    Vorrei cioè una selezione tipo..

    ".. WHERE ("& data1 &" - data) < 10" 'dove 10sono i giorni entro il quale fare la selezione.

    Alcune informazioni sul capo 'data' nel DB:
    Nome, Tipo, Formato Predefinito
    data, date, 0000-00-00

    Io ho provato a fare tutte le prove possibili
    ".. WHERE ("&Cdate(2007-07-25)&" - data)<10"
    ".. WHERE ("&Cdate(07-25-2007)&" - data)<10"
    ..etc
    il risultato è sempre lo stesso: come se la selezione per data non ci fosse..

    Sapete aiutarmi?

    Grazie

  2. #2
    Utente di HTML.it L'avatar di agenti
    Registrato dal
    Feb 2002
    Messaggi
    2,427
    credo dovresi usare datediff

    datediff("d",data1,data2) < 10

  3. #3
    Ciao e grazie agenti,
    l'SQL risultante dovrebbe essere:

    sql="SELECT * FROM news_notizie WHERE (DateDiff(d,25/07/2007, data)<30) ORDER BY data DESC"

    Perchè così non funziona.

    Da qui leggo però un'altra cosa
    http://dev.mysql.com/doc/refman/5.0/...ction_datediff

    Provo a cambiare in questo modo
    sql="SELECT * FROM news_notizie WHERE (DateDiff('25/07/2007', data)<30) ORDER BY data DESC"

    In questo modo non ho ne errori ne risultati.. sebbene in teoria ci siano.

    Volendo fare il controllo tra un valore fisso ed uno variabile (il campo data che cambia in funzione dell'item), potrei ragionare in modo diverso:

    sql="SELECT * FROM news_notizie WHERE data BETWEEN "& data1 &" AND "& Cdate(data1 - 30)&" ORDER BY data DESC"

    dove data1 è una variabile in cui è presente la data di riferimento e 30 sono i giorni max entro il quale fare la ricerca.

    Anche in questo caso non mi da alcun output (e nemmeno nessun errore): com'è possibile?

    Sbaglio qualcosa?
    Eppure alcune news verificate hanno 25/07/2007 e 23/07/2007, rispettivamente quella di riferimento ed una tra quelle possibili come output..

    Per completezza questa selezione si inserisce su un'altra che effettuo per trovare la correlazione in base a parole chiave.
    Ecco la query completa:
    SELECT id,titolo,descrizione,chiave,data FROM news_notizie WHERE ((titolo LIKE '%legge_4_%' OR descrizione LIKE '%legge_4_%' OR chiave LIKE '%legge_4_%' OR titolo LIKE '%pma%' OR descrizione LIKE '%pma%' OR chiave LIKE '%pma%' OR titolo LIKE '%fecondazione_assistit_%' OR descrizione LIKE '%fecondazione_assistit_%' OR chiave LIKE '%fecondazione_assistit_%' ) AND (data BETWEEN '25/07/2007' AND '25/06/2007')) ORDER BY data DESC LIMIT 5


    Grazie per chi volesse e/o riuscisse ad aiutarmi

  4. #4
    Utente di HTML.it L'avatar di agenti
    Registrato dal
    Feb 2002
    Messaggi
    2,427
    per controllare se il datediff timritorna un valore numerico
    prima di eseguire la query semplciemente memorizza il risultato in uan variabile e stampala:

    Dim mia_data_test
    mia_data_test = datediff("d",data1,data2)

    response.write mia_data_test
    response.end

    nel caso dovesse stampare un valore numerico...

    sql="SELECT * FROM news_notizie WHERE "&mia_data_test&"<30) ORDER BY data DESC"

    anche se in realtà la cosa dal punto di vista logico non mi convince molto...
    dato che l'istruzione "where" non si riferisce ad una colonna nella tabella....

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