Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 15

Discussione: .NET e le date

  1. #1

    .NET e le date

    Devo gestire un campo data all'interno di una string builder che poi passerò ad un DataView... (per effettuare alcune operazioni sulla data)

    La data deve essere nel formato gg/mm/aaaa oppure (come avveniva col Classic ASP) devo trasformala nel formato mm/gg/aaaa?

    nel mio caso ho:

    StringBuilder sb = new StringBuilder();

    if ((Da!= string.Empty)&(A!= string.Empty))
    sb.AppendFormat( "{2} (datafineproduzione BETWEEN #{0}# AND #{1}# )",
    Da, A, ((sb.Length!=0) ? " AND " : "" ));

    in questo caso la data devo trasformarla utilizzando

    Da=DateTime.Now.ToString("MM/dd/yyyy") ???????

    oppure posso lasciarla nel formato "gg/mm/aaaa"???

    Ottengo sempre errore nella query quindi non capisco se sbaglio a passare la data (quindi il formato è sbagliato) oppure se non posso utilizzare il BETWEEN come filtro del mio DataView.



    Inoltre: dato che vorrei capire bene la logica da seguire ... anche se non è il mio caso ...se avessi utilizzato qualche cosa del tipo:

    OleDbCommand myCommand = new OleDbCommand(SQLStatement,myConnection);
    myCommand.Parameters.Add(new OleDbParameter("@Data", OleDbType.DateTime));
    myCommand.Parameters["@Data"].Value = Data;

    Avrei potuto passare la data nel formato "gg/mm/aaaa" ???

    Grazie per l'aiuto
    Iceberg

  2. #2
    Ho fatto altre prove

    inizialmente avevo messo il Between ma sembrava avere problemi inviando il filtro al DataView, quindi ho utilizzato:

    sb.AppendFormat( "{2} (datafine >=#{0}# AND datafine <=#{1}#)", Da, A,
    ((sb.Length!=0) ? " AND " : "" ));


    ma le due variabili "Da" e "A" in che formato devono essere??

    dd/mm/aaaa oppure mm/dd/aaaa

    se il formato corretto è il secondo, come posso trasformare le date nel secondo formato?



    inoltre ho provato ad inserire nella StringBuilder sia:

    #{0}#

    che:

    '#{0}#'

    e funziona in entrambi i casi.... qual'è formato corretto per passare la data con Access?
    Iceberg

  3. #3
    Sto facendo una confusione ....

    non capisco proprio come risolvere il problema della data in formato dd/mm/aaaa o mm/dd/aaaa in Access

    qualcuno ha già affrontato questo casino???

    il problema si pone solo per le query fatte su DB oppure anche per filtri su un DataView?

    Grazie
    Iceberg

  4. #4
    Se il db è access prova a passarle yyyy/mm/dd
    Frate Priore: "È Lucifero in persona!"
    Trinità: "Lo conosci?"
    Bambino: "Mai sentito nominare, deve essere un professionista dell'est"

  5. #5
    Utente di HTML.it L'avatar di pietro09
    Registrato dal
    Jan 2002
    Messaggi
    10,116
    In Access ho sempre usato #m/g/aaaa# ed ha sempre funzionato. Però è molto più interessante il formato proposto da Trinità: #aaaa/m/g#. Non lo sapevo e funziona perfettamente.
    Pietro

  6. #6
    Prima di fare la query metti questo comando:

    using System.Globalization;

    ....

    System.Threading.Thread.CurrentThread.CurrentCultu re = new CultureInfo("en-EN");

    sql = "INSERT ....."

    Vedrai che ti mette nel formato in inglese :di56:
    Spago

    [Officials Sites]
    http://www.hobbybirra.it/spaghetto/

  7. #7
    Originariamente inviato da spago
    Prima di fare la query metti questo comando:

    using System.Globalization;

    ....

    System.Threading.Thread.CurrentThread.CurrentCultu re = new CultureInfo("en-EN");

    sql = "INSERT ....."

    Vedrai che ti mette nel formato in inglese :di56:
    Grazie a tutti per la risposta, ho ancora 3 dubbi:

    1) per trasformare la data nel formato mm/gg/aaaa basta utilizzare questa semplice soluzione???

    using System.Globalization;
    System.Threading.Thread.CurrentThread.CurrentCultu re = new CultureInfo("en-EN");

    nient'altro??? a me non sembra funzionare


    2) questa trasformazione devo utilizzarla SOLO per query dirette (tipo SELECT, INSERT...) oppure anche per effettuare filtri sul DataView???


    3) nelle query con date devo utilizzare gli apici oppure solo #?

    esempio WHERE data = '#data#' oppure WHERE data = #data#

    a me funziona con entrambi ma vorrei capire qual'è la soluzione corretta!


    Grazie ancora a tutti
    Iceberg

  8. #8
    Utente di HTML.it L'avatar di pietro09
    Registrato dal
    Jan 2002
    Messaggi
    10,116
    Ti dico il mio parere ma, bada bene, non ho la pretesa di dirti che è la soluzione più corretta.
    1) lascia perdere. Nel web.config metti
    codice:
    <globalization requestEncoding="utf-8" responseEncoding="utf-8" culture="it-IT" uiCulture="it-IT" />
    e ciò ti assicura che le date siano valide solo nel formato giorno/mese/anno. Le date credo che tu le prenda da textbox perciò tutti i controlli di validità presuppongono il formato italiano.

    Allora, se utilizzi Access, avrai notato che converte la data nel formato americano ossia, se metti nel filtro #15/3/1999#, nell'sql viene riportato come #3/15/1999# senza apici o altre cose.

    Per convertire una data da g/m/a in m/g/a posso pure copiarti la funzione che uso io ma ti posso assicurare che è talmente banale che ti vergogneresti

    E comunque, questi dubbi si risolvono solo sperimentando. Perciò farti il tuo filtro, stampalo a video, copialo e provalo in Access

    Ciao
    Pietro

  9. #9
    Allora, se utilizzi Access, avrai notato che converte la data nel formato americano ossia, se metti nel filtro #15/3/1999#, nell'sql viene riportato come #3/15/1999# senza apici o altre cose.
    Grazie per la risposta

    ma quindi devo utilizzare:

    <globalization requestEncoding="utf-8" ...


    oppure devo trasformarla nel formato mm/gg/aaaa

    ???
    Iceberg

  10. #10
    Utente di HTML.it L'avatar di pietro09
    Registrato dal
    Jan 2002
    Messaggi
    10,116
    :master: allora non mi sono proprio spiegato.

    Ti mando un pezzo di codice da adattare fatto preso da vbscript quando non conoscevo javascript ed adattato in vb.net (di trasformarlo in c## non ci penso nemmeno)
    codice:
    _Criteri &= NomeCampo & " " & getOperatore(Confronto) & " " & "#" & ScambiaMeseGiorno(ValoreCampo1) & "#"
    codice:
    Private Function ScambiaMeseGiorno$(ByVal d$)
    	Dim x As DateTime = DateTime.Parse(d)
    	Return x.Month & "/" & x.Day & "/" & x.Year
    End Function
    a me ha sempre funzionato (sono in Access)

    in pratica mi costruisco la condizione where col nome del campo, il tipo di confronto, ...
    Pietro

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.