Blog

Filtraggio per intervallo di date in un DataView


Spiegazione con esempio della maniera corretta di formattare le date ed ore per creare i filtri da applicare ai DataView.

Molte volte ho ricevuto una domanda da ex studenti di corsi passati. Come posso fare dei filtraggi per intervalli di data e ora in un DataView? Sembrerebbe quasi una domanda banale, scontata. Ci sono tonnellate di esempi su internet su come fare un filtraggio su un Dataview. Certo è vero, ma…. come spesso accade in tanti tutorial o manuali c’è sempre il solito esempio banale, che va bene come esempio, ma non va mai bene per le applicazioni del mondo reale.

Per prima cosa le date se riportate come costanti all’interno delle espressioni dei filtri dei DataTable devono essere sempre scritte all’interno dei cancelletti (#), nella forma mese/giorno/anno ovvero così #MM/dd/yyyy#, pratica nel formato inglese. E le ore e i minuti? Questi fanno scritti nel seguente formato hh:mm.

A questo punto il tutto va implementato. Ed ovviamente a meno di cosi eccezionali, non scriveremo mai nel codice le date, ma generalmente queste le prenderemo da delle variabili, perché magari sono state inserite in input dall’utente oppure perché vengono da un database. Quindi il modo migliore per scrivere le date nel formato richiesto è usare uno String.Format. Vediamo un esempio ed un problema:

String.Format(" DataOraRichiesta > #{0:MM/dd/yyyy hh:mm}#", Now())

Questo codice ha un errore. Come faccio a mettere il separatore fra ora e minuti (:), se i due punti sono un simbolo usato nello String.Format?
La soluzione è fare l’escape dei due punti, ovvero scrivere \: come separatore fra ora e minuti. Con questa scrittura possiamo rappresentare i due punti.

In conclusione per effettuare il filtraggio su un intervallo di dato possiamo fare come nel codice successivo

Dim Filtro = String.Format(" DataOraRichiesta > #{0:MM/dd/yyyy hh\:mm}# and DataOraRichiesta < #{1:MM/dd/yyyy hh\:mm}#", Now(), Now.AddDays(-7))

Qui abbiamo effettuato un filtraggio negli ultimi 7 giorni a partire dall’orario attuale.

Di sequito l’elenco riassuntivo dei caratteri speciali consentiti nella formattazione delle data

d rappresenta il giorno del mese (una o due cifre);
dd rappresenta il giorno del mese (sempre due cifre);
M rappresenta il mese (una o due cifre);
MM rappresenta il mese (sempre due cifre);
yy rappresenta l'anno (due cifre);
yyyy rappresenta l'anno (quattro cifre);
rappresenta l'ora in formato 24-ore (una o due cifre);
HH rappresenta l'ora in formato 24-ore (sempre due cifre);
rappresenta l'ora in formato 12-ore (una o due cifre);
hh rappresenta l'ora in formato 12-ore (sempre due cifre);
rappresenta l'ammontare dei minuti (una o due cifre);
mm rappresenta l'ammontare dei minuti (sempre due cifre);
s rappresenta l'ammontare dei minuti (una o due cifre);
ss rappresenta l'ammontare dei minuti (sempre due cifre);
rappresenta il designatore AM/PM (primo carattere);
tt rappresenta il designatore AM/PM (entrambi i caratteri);
\ è il carattere di escape;
/ è il separatore di default per le date;
: è il separatore di default per le ore.


Copyrights © 2011-2019 Tutti i diritti riservati - by Ideativi Srl