2010-03-30 8 views
0

Comment filtrer DataView/DataTable par heure? J'ai une table avec la colonne datetime à l'intérieur et j'ai besoin de filtrer par le temps qui est à l'intérieur de cette valeur datetime. En SQL natif, ce n'est pas si difficile, mais dans les expressions ADO.NET, cela fait une différence pour moi.Mettre un filtre sur DataView par heure

Répondre

1

Si vous souhaitez que le filtre ignore complètement le composant date de DateTime, je ne pense pas que cela soit possible en utilisant l'expression de filtre.

Cependant, si le filtrage à la fois la date et l'heure convient à vos besoins, vous pourriez faire quelque chose comme ceci:

DataTable dt = new DataTable("t1"); 
dt.Columns.Add("ID", typeof(int)); 
dt.Columns.Add("DT", typeof(DateTime)); 
dt.Rows.Add(new object[] {1, new DateTime(2009, 1, 1, 14, 56, 27, 123)}); 

DateTime startDT = new DateTime(2009, 1, 1, 14, 56, 27, 123); 
DateTime endDT = new DateTime(2009, 1, 1, 14, 56, 28, 123); 

string filter = string.Format(
"DT >= '{0:yyyy-MM-ddTHH:mm:ss.fffffff}' AND DT <= '{1:yyyy-MM-ddTHH:mm:ss.fffffff}'", 
startDT, endDT); 

DataView dv = new DataView(dt, filter, null, DataViewRowState.CurrentRows); 

MessageBox.Show("Num Rows selected : " + dv.Count.ToString()); 

Notez l'utilisation du format de date/heure ISO: « AAAA-MM-JJThh: mm: ss.fffffff " dans le filtre.

+0

Mais je dois utiliser la date qui est dans l'ensemble de données (DT dans votre exemple) et j'ai besoin de sa partie seulement et filtrer par sa partie

+0

Je ne pense pas que ce soit possible via Expressions. –

+0

Eh bien .. Merci quand même :) – Azat