Entwickler-Ecke
Datenbanken (inkl. ADO.NET) - DataTable.Select 'System.DateTime'
dresado - Do 02.06.16 10:28
Titel: DataTable.Select 'System.DateTime'
Hallo miteinader,
ich möchte aus einer DataTable mittels DataTable.Select ein Datum filtern.
Die Abfrage bringt mir leider kein Ergebnis.
Wenn ich <= oder >= statt = verwende bekomme ich die korrekten Ergebnisse.
Ich vermute es liegt daran, dass das Feld in der Datenbank mit Datum und Uhrzeit gespeichert wird.
Hier mein Code:
SQL-Anweisung
1: 2: 3:
| myds.Tables["Preis"].Select( "Convert(AllTKundPreisDatum, 'System.DateTime') = #3/12/2015#", "AllTKundPreisKunNum ASC"); |
Vielleicht hat jemand dieses Problem schon gelöst.
MfG Dominik
Moderiert von Th69: SQL-Tags hinzugefügt
Ralf Jansen - Do 02.06.16 13:46
Zitat: |
Vielleicht hat jemand dieses Problem schon gelöst. |
Ja du ;) Siehe in deinem Beitrag oben. Was spricht dagegen es so zu machen?
Ein Convert macht dir aus einem String einen DateTime. Ich vermute mal AllTKundPreisDatum war vorher kein string (dann wäre das sortieren ein Problem) und der enthielt auch schon den Zeitanteil. Convert ändert den Typ aber es truncated keine Information.
dresado - Do 02.06.16 14:31
Hallo Ralf,
AllTKundPreisDatum ist ein datetime-Feld, welches Datum und Uhrzeit speichert.
Als Beispiel: 2015-03-12 10:23:36 (MySql)
Das Select funktioniert, wenn im Feld 2015-03-12 00:00:00 stehen würde.
Das habe ich getestet.
Also vermute ich, dass es an der Uhrzeit liegt.
Das Select vergleicht #3/12/2015 10:23:36# mit der Eingabe #3/12/2015# und erhält kein Ergebnis.
Kann ich beim Convert die Uhrzeit des Feldes irgendwie aussen vor lassen?
[Feldname].Substring(0, 10) und Left([Feldname], 10) funktionieren leider nicht.
MfG Dominik
erfahrener Neuling - Do 02.06.16 15:07
Hallo dresado,
um von einem
DateTime die Uhrzeit zu entfernen, kannst du
.ToShortDateString() benutzen. Das sieht dann so aus:
C#-Quelltext
1: 2: 3: 4: 5: 6: 7: 8:
| DateTime myDate = Convert.ToDateTime("02.06.2016");
Console.WriteLine(myDate.ToString()); Console.WriteLine(myDate.ToShortDateString());
|
Gruß Julian
Ralf Jansen - Do 02.06.16 18:10
Zitat: |
Kann ich beim Convert die Uhrzeit des Feldes irgendwie aussen vor lassen? |
Nein. Zumindest ist mir das nicht bewußt.
Der Filter hat nur eingeschränkte Möglichkeiten. Guckst du in der
MSDN [
https://msdn.microsoft.com/en-us/library/system.data.datacolumn.expression.aspx].
Ich sehe aber auch nicht warum du "MeinDatumsFeld >= #Datum# AND MeinDatumsFeld <= #Datum+1" nicht willst?
Jede andere denkbare Möglichkeit ist weder schneller/langsamer/schöner oder sonstwas.
dresado - Fr 03.06.16 06:45
Hallo Ralf,
Zitat: |
Ich sehe aber auch nicht warum du "MeinDatumsFeld >= #Datum# AND MeinDatumsFeld <= #Datum+1" nicht willst?
Jede andere denkbare Möglichkeit ist weder schneller/langsamer/schöner oder sonstwas. |
Danke, so habe ich es gemacht.
Ich dachte es gibt eine bessere Funktion beim DataTable.Select().
Mfg Dominik
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2024 by Christian Stelzmann Alle Rechte vorbehalten.
Alle Beiträge stammen von dritten Personen und dürfen geltendes Recht nicht verletzen.
Entwickler-Ecke und die zugehörigen Webseiten distanzieren sich ausdrücklich von Fremdinhalten jeglicher Art!