Forum: Programmieren allgemein
by NormanNG,
8. Mai 2008
Hi,
hab´ heute nur wenig Zeit
wie wird denn die AdoStoredProc erstellt? Evtl. ist ein Parameter falsch definiert.
Oder es gibt ein Problem zwischen den lokalen und serverseitigen Spracheinstellungen? :gruebel:
Zwar nicht optimal, aber kurzfristig hilfreich:
definiere den Parameter @datetime in der Procedure als String
und übergebe ihn wie oben beschrieben sprachunabhängig...
Forum: Programmieren allgemein
by NormanNG,
8. Mai 2008
In deinem @date_time sind Monat und Tag vertauscht!
declare @Date_Time datetime
set @Date_Time = '2008-05-07 15:16:32'
select *
from
where . between DateAdd(second, -1, @Date_Time) and DateAdd(second, 1, @DateTime)
Forum: Programmieren allgemein
by NormanNG,
8. Mai 2008
Hi,
um zu sehen, mit welchen Werten gearbeitet wird, lass dir die Daten doch mal anzeigen:
select DateAdd(hour,-1,@date_time), DateAdd(hour,1,@date_time), . ...
Das hier übrigends...
where DateAdd(hour,0,.) Between ...
hat wieder das Problem mit dem Index, da die Tabellenspalte in einer Funktion "verpackt" ist
und somit kein Index verwendet werden kann.
Forum: Programmieren allgemein
by NormanNG,
8. Mai 2008
Hi,
intern werden datetime-Werte als float gespeichert, wobei das Datum im
Vorkomma- und die Zeit im Nachkommateil abgebildet sind. Die DateOnly-Funktion
macht nichts anderes, als den Nachkommateil abzuschneiden.
Forum: Programmieren allgemein
by NormanNG,
7. Mai 2008
Das mit dem Index stimmt natürlich.
Aber der Minutenbereich ist doch eigendlich zu groß?
WHERE Table.DateTimeField Between DateAdd(minute,-1,@Date) and DateAdd (minute,1,@Date)
Damit wird doch nicht nur die gewünschte Zeit, sondern auch 1 Minute vorher/nachher zurückgeliefert, oder?
Forum: Programmieren allgemein
by NormanNG,
7. Mai 2008
Hi,
Nicht ganz. :-D
Hier wird eine Sekundendifferenz gebildet.
Wenn der TE mehrere Datensätze für einen Tag hat,
aber nur die mit an diesem Tag mit der gewünschten Zeit ansprechen möchte,
dann greift dein Vergleich auf falsche Daten zu.