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

    [vb.net2008] Ms Access Select Where Con Date

    Ciao a tutti, questa domanda non è specifica per Visual basic ma non sapevo dove postarla.

    ho una tabella di ms access in cui un campo è un date
    in questo campo sono memorizzate sia date che orario

    esempio :
    01/01/2011 08.00
    01/01/2011 09.10
    01/01/2011 10.20
    01/01/2011 11.10

    come posso impostare una SELECT per ritornare tutti i records del 01/01/2011 a prescindere dell'orario?
    è necessario impostare un BETWEEN 01/01/2011 00.00 and 01/01/2011 23.59 ?

    grazie
    Delfino Cobalto

  2. #2
    Utente di HTML.it L'avatar di gibra
    Registrato dal
    Apr 2008
    residenza
    Italy
    Messaggi
    4,244
    Puoi anche escludere l'orario, ma devi specificarlo nel testo della query (o meglio del Command), ma devi usare i parametri del Command se non vuoi 'annegare' nei soliti, noiosi problemi di formattazione

    Vedi l'articolo su ADODB in firma che parla proprio della questione date.

  3. #3
    grazie ho risolto in questo modo:

    nella query
    codice:
    where format(CP_DATE,'dd/MM/yyyy') = @date_ref )

    nei parametri
    codice:
    objCommand.Parameters.AddWithValue("@date_ref", my_date.ToString("dd/MM/yyyy"))
    in questo modo sono sicuro di filtrare la data a prescindere dell'orario

    domanda
    Se dovessi cambiare database, ad esempio MS SQL
    come mi dovrei comportare?
    Delfino Cobalto

  4. #4
    Utente di HTML.it L'avatar di gibra
    Registrato dal
    Apr 2008
    residenza
    Italy
    Messaggi
    4,244
    Non devi cambiare niente.
    Ecco perchè è importante usare i Command con i parametri.

    Diverso sarebbe stato se tu avessi costruito la stringa SQL alla 'vecchissima maniera' con tutti i relativi problemi di formattazione.

    Infatti, ad esempio, Access vuole il cancelletto come delimitatore di data, metre SQL Server (e praticamente tutti gli altri database) vogliono l'apice, poi la data deve essere nel formato MM/DD/YYYY.
    Per non parlare poi delle view di Access, in cui il discorso cambia ulteriormente!

    Usando invece i parametri si passa il valore così com'è al resto pensa ADO.NET con buona pace dello sviluppatore.

  5. #5
    Grazie.. sulla parte dei parametri è ok
    ma il parametro fuzniona solo se nella select formatto la data senza orario

    codice:
    where format(CP_DATE,'dd/MM/yyyy') = @date_ref )
    se lascio CP_DATE = @date_ref non funziona

    se passo ad altri Database devo ugualmente formattare il campo prima di confrontarlo con @date_ref oppure è automatico?

    Grazie ancora

    saluti
    Delfino Cobalto

  6. #6
    Utente di HTML.it L'avatar di gibra
    Registrato dal
    Apr 2008
    residenza
    Italy
    Messaggi
    4,244
    Originariamente inviato da delfino_cobalto
    Grazie.. sulla parte dei parametri è ok
    ma il parametro fuzniona solo se nella select formatto la data senza orario
    Ovviamente.
    Sei tu che vuoi confrontare solo la data senza l'orario, quindi devi dirglielo al motore del database, altrimenti non lo indovina mica da solo.


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.