Visualizzazione dei risultati da 1 a 8 su 8
  1. #1
    Utente di HTML.it
    Registrato dal
    Sep 2004
    Messaggi
    322

    problemi con confronto fra date

    ho la mia query nella quale seleziono degli eventi che sono ancora in corso, ovvero che la data di fine evento è maggiore della data corrente.

    ....WHERE datafine > #" & date() & "# .....

    pero mi succede che la query come risultato mi mette tutti eventi di quest'anno, ma non quelli dopo la data corrente, ma anche prima. Mentre non mette quelli degli anni precedenti. Come se il cconfronto lo facesse solo per quanto riguarda l'anno. Infatti se inverto e metto "<" al posto di maggiore, mi mette gli eventi degli anni precedenti..

    come posso risolverla?

    grazie

  2. #2
    Utente di HTML.it L'avatar di AvOJaromil
    Registrato dal
    Feb 2006
    residenza
    laddove si stagiona formaggio dentro a dei grossi buchi di tufo
    Messaggi
    549
    sql utilizza il formato 2007/10/02 devi perciò modificare la data restituita da vb
    probabilmente esiste un metodo più veloce ma io ho usato le funzioni per date di vb
    data= Year(date) & "/" & Month(date)......
    "homer sei tonto come un mulo e due volte più brutto. se uno sconosciuto ti offre un passaggio tu devi accettarlo..."

    www.flickr.com/photos/asciella/
    www.lastfm.it/user/qvaioe/

  3. #3
    Utente di HTML.it
    Registrato dal
    Sep 2004
    Messaggi
    322
    ok grazie.. in effetti con le date c'è sempre un po di caos..

  4. #4
    Io disolito utilizzo il formato standard ISO: aaaammgg

    Scrivendolo così (per esempio 20071002) viene riconosciuto in modo univoco dal RDBMS

  5. #5
    Utente di HTML.it
    Registrato dal
    Sep 2004
    Messaggi
    322
    Originariamente inviato da AvOJaromil
    sql utilizza il formato 2007/10/02 devi perciò modificare la data restituita da vb
    probabilmente esiste un metodo più veloce ma io ho usato le funzioni per date di vb
    data= Year(date) & "/" & Month(date)......
    ho provato a fare cosi:
    oggi = Year(date) & "/" & Month(date) & "/" & Day(date)
    ma quando faccio il confronto fa come prima.. ovvero non va bene..

  6. #6
    Utente di HTML.it
    Registrato dal
    Sep 2004
    Messaggi
    322
    ok funza!

    ...WHERE Month(datafine) > " & Month(date())-1 & " AND Year(datafine) = " & Year(date())..

  7. #7
    ma come faccio a selezionare tutte le date oltre "datafine" se voglio considerare anche il giorno?

    se faccio:
    WHERE Month(datafine) > " & Month(date())-1 & " AND Year(datafine) = " & Year(date())..

    Supponiamo che data odierna è 02/10/2007 e nel database ho le seguenti date

    1. 01/05/2007
    2. 04/09/2007
    3. 12/10/2007
    4. 24/12/2007
    5. 01/01/2008
    6. 15/02/2008
    7. 24/11/2008

    il risultto della selezione sarebbe:

    12/10/2007
    24/12/2007
    24/11/2008

    e le altre date del 2008?????? insomma... c'è qualcosa che non va, non posso confrontare solo MEse con MEse, Anno con Anno e Giorno con Giorno. Intanto confrontando con la data intera, come postato precedentemente, la cosa non funziona
    come si puo' fare?

  8. #8
    Ti conviene imparare a lavorare con le date intere.
    Come stai procedendo adesso è poco funzionale e molto dispensioso di codice.

    Devi fare i confronti sulle date intere. Per fargliele arrivare in formato univoco utilizza il formato ISO.
    Inoltre studiati come funziona l'istruzione sql 'Convert'.

    Infine...
    Originariamente inviato da jacopos81
    ho provato a fare cosi:
    oggi = Year(date) & "/" & Month(date) & "/" & Day(date)
    ma quando faccio il confronto fa come prima.. ovvero non va bene..
    Non ti funziona perchè devi usare la DateDiff.
    In pratica fai la differenza tra le due date e vedi se il risultato è maggiore, minore o uguale a zero.

    codice:
    WHERE datediff("d",dataFine,dataAttuale) > 0
    Questo perchè la differenza di giorni ("d") tra le date è positiva.

    dataFine-dataAttuale > 0
    Allora la data di fine è maggiore della data attuale.


    Come ti ho già detto poi è meglio imparare ad usare la Convert (per convertire le date che passi tu nello stesso formato di quelle presenti nel database) o comunque di utilizzare il formato ISO che permette di leggere univocamente la data a prescindere dalla codifica impostata (il 10/02/2007 potrebbe essere sia il 10 Febbraio in italiano che il 2 Ottobre in inglese).

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.