Entwickler-Ecke
Datenbanken (inkl. ADO.NET) - Datum zwischen 2 Werten
Talemantros - Fr 21.11.14 17:15
Titel: Datum zwischen 2 Werten
Hi,
leider habe ich mich zu früh gefreut.
In
http://www.entwickler-ecke.de/topic_Stunden+und+Minuten+in+einer+MySQL+Datenbank_113677.html dachte ich habe ich den SQL String richtig geschrieben.
Dieser sollte das heutige Datum mit 2 Werten vergleich und alle wo es passt auf "aktiv = 1" setzen
C#-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15:
| strSQL = "Update maschzeit Set aktiv = 1 where (?heute between gueltigvon and gueltigbis)";
using (MySqlConnection conn = new MySqlConnection (connStr)) { using (MySqlCommand cmd = new MySqlCommand (strSQL, conn)) { conn.Open();
cmd.Parameters.AddWithValue("?heute", DateTime.Now.ToShortDateString());
cmd.ExecuteNonQuery();
conn.Close(); } } |
Erst dachgte ich das funktioniert. HAbe beim erneuten Testen aber festgestellt, dass er zwar akti = 1 setzt, aber nicht den richitgen Wert sondern immer den letzten Wert.
Siehe Anlage
Habe leider keinen Ansatzpunkt. Seht ihr etwas?
Gruß
Daniel
Ralf Jansen - Fr 21.11.14 17:38
Zitat: |
cmd.Parameters.AddWithValue("?heute", DateTime.Now.ToShortDateString()); |
Das sieht für mich so aus als würdest du das Datum als string speichern. Das wäre eine ganz schlechte Idee und dann kein Wunder mehr das es nicht geht.
DateTime.Now.ToShortDateString() ist von den lokalen Einstellungen abhängig und du bekommst halt einen anders formatierten string je nach Einstellung des lokalen System. Wenn man also ein Datum als string speichert ist das so wie du es machst maximal Zufall wenn es geht man muß schon beim lesen und schreiben ein eindeutig definiertes Format nehmen.
Am besten ein DateTime für die Spalte benutzen oder wenn es aus einem mir nicht nachvollziehbaren Grund ein string sein muß mußt du den string in einem sortierbaren Format speichern. Sortierbar heißt das Format so gewählt sein muss das jemand der die Spalte sortieren will (und das Sortierverfahren nur weiß das es ein beliebiger string ist) das auch passt wenn mann die Sonderbedeutung, dieser string ist ein Datum, das für ein Datum passende rauskommt. Also z.B.
DateTime.Now.ToString("yyyyMMdd"); Von mir aus auch mit irgendwelchen Trennzeichen.
Talemantros - Sa 22.11.14 11:46
Guten Morgen,
die Spalte war zwar kein String, aber leider nur ein Date.
Habe dieses nun in DateTime geäändert und den Befehl gekürzt auf DateTime.Now
Das macht einen besseren Eindruck.
TEste es nochmal.
Danke
Gruß
Daniel
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2025 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!