MS SQL Eigenheit....

alles zum Microsoft SQL Server

Moderator: Moderatoren

Antworten
Benutzeravatar
satmax
1000 working lines a day
1000 working lines a day
Beiträge: 831
Registriert: Do, 02. Dez 2010 19:34
Wohnort: Biberbach in Österreich
Hat sich bedankt: 1 Mal
Danksagung erhalten: 1 Mal
Kontaktdaten:

MS SQL Eigenheit....

Beitrag von satmax »

Hallo,
MS SQL Server via Console:

where t.TerminVon between '21.02.2015' and '21.02.2015 23:59:59.998'

liefert korrekt alle Datensätze vom 21.02.2015

where t.TerminVon between '21.02.2015' and '21.02.2015 23:59:59.999'

Liefert auch Datensätze vom 22.02.2015 00:00:00.000 (nicht mehr 22.02.2015 00:00:00.001)


Hat dafür jemand eine Erklärung? Offensichtlich wird da vom SQL Server gerundet!? :banghead:

Hier auch die komplette Abfrage:

Code: Alles auswählen

select distinct a.AuftragNr, 
		(select top 1 TerminVon 
		from TourPos tt 
		where a._ID = tt._ID_Auftrag 
		order by TerminVon ) 
		as termin
from auftrag a
JOIN TourPos t ON a._ID = t._ID_Auftrag
where      t.TerminVon between '21.02.2015'  and '21.02.2015 23:59:59.999'
AND t.laden=1
order by termin , auftragnr
Gruß
Markus
georg
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 2823
Registriert: Fr, 08. Feb 2008 21:29
Hat sich bedankt: 95 Mal
Danksagung erhalten: 13 Mal

Re: MS SQL Eigenheit....

Beitrag von georg »

Hallo, Markus -


mal mit

between '2015-02-21' AND '2015-02-21-23:59:59.999'

versucht? Führ doch mal einen SELECT auf ein, zwei Sätze aus und übernimmt die Schreibweise, die der Server Dir zurückliefert.
Liebe Grüsse aus der Eifel,

Georg S. Lorrig
Redakteur der Wiki des Deutschprachigen Xbase-Entwickler e.V.
Benutzeravatar
satmax
1000 working lines a day
1000 working lines a day
Beiträge: 831
Registriert: Do, 02. Dez 2010 19:34
Wohnort: Biberbach in Österreich
Hat sich bedankt: 1 Mal
Danksagung erhalten: 1 Mal
Kontaktdaten:

Re: MS SQL Eigenheit....

Beitrag von satmax »

Hallo Georg,

ja, habe ich auch versucht, das geht aber gar nicht.

Code: Alles auswählen

where t.TerminVon between '2015-02-21 00:00:00.000' and '2015-02-21 23:59:59.998'
ergibt:
Meldung 242, Ebene 16, Status 3, Zeile 4
Bei der Konvertierung eines varchar-Datentyps in einen datetime-Datentyp liegt der Wert außerhalb des gültigen Bereichs.
Gruß
Markus
Antworten