none
DataTable und Select auf DateTime RRS feed

  • Frage

  • Hallo,

    ich möchte in einer DataTable einen Select auf eine DateTime-Spalte machen und dabei aber nur das Datum und nicht die Uhrzeit vergleichen. Im Sql ist das kein Problem:

    SELECT *FROM TABELLE WHERE CONVERT(VARCHAR,TIMEVALUE,104) = '05.05.2011'

    Wie kann ich das lösen?

    Für Eure Tipps dankend,

    Klaus 


    No Brain - No Pain
    Dienstag, 5. April 2011 08:05

Antworten

  • Hallo,

    habs jetzt erstmal so gelöst:

    DataRow

     

    [] rows = Tabelle.Select("TIMEVALUE >= '" + date.ToShortDateString() + " 00:00:00' AND TIMEVALUE <= '" + date.ToShortDateString() + " 23:59:59'"

    );

    Ist zwar nicht so elegant wie ich es gern hätte, funktioniert aber. Oder gibts da doch noch einen besseren Weg?

    sG,

    Klaus


    No Brain - No Pain
    • Als Antwort markiert Klaus Mayer Dienstag, 5. April 2011 14:12
    Dienstag, 5. April 2011 09:19

Alle Antworten

  • Hallo,

    ein DateTime-Objekt hat die Methode ToShortDateString. Diese liefert einen string zurück, der dann mit Hilfe der Equals-Methode verglichen werden kann.

    DateTime firstDate = DateTime.Now;
    DateTime secondDate = DateTime.Now.AddDays(5);
    
    bool datesAreEqual = firstDate.ToShortDateString().Equals(secondDate.ToShortDateSintr());
    
    

     

    Gruß

    Chris

    Dienstag, 5. April 2011 08:33
  • Hallo Chris,

    das mit ToShortDateString war mir klar. Nur wie baue ich das in den Select-String für das DataTable ein?

    sG,

    Klaus


    No Brain - No Pain
    Dienstag, 5. April 2011 08:37
  • Hallo Klaus,

    kannst Du evtl. noch ein paar Details mehr liefern?

    Wie wird die DataTable versorgt bzw. wie erfolgt der Abruf der Daten (DataReader, DataAdapter...)

    Dienstag, 5. April 2011 08:45
  • Das DataTable kommt über eine Klasse direkt aus der Datenbank. Auf den füllenden DataAdapter soll nicht zugegriffen werden.

    sG,

    Klaus


    No Brain - No Pain
    Dienstag, 5. April 2011 08:55
  • Hallo Klaus,

    versuch mal die RowFilter-Eigenschaft der DefaultView aus der DataTable

    http://msdn.microsoft.com/de-de/library/system.data.dataview.rowfilter(v=VS.80).aspx

     

    Dienstag, 5. April 2011 09:03
  • Hallo,

    habs jetzt erstmal so gelöst:

    DataRow

     

    [] rows = Tabelle.Select("TIMEVALUE >= '" + date.ToShortDateString() + " 00:00:00' AND TIMEVALUE <= '" + date.ToShortDateString() + " 23:59:59'"

    );

    Ist zwar nicht so elegant wie ich es gern hätte, funktioniert aber. Oder gibts da doch noch einen besseren Weg?

    sG,

    Klaus


    No Brain - No Pain
    • Als Antwort markiert Klaus Mayer Dienstag, 5. April 2011 14:12
    Dienstag, 5. April 2011 09:19