Das Forentreffen 2018 findet am 20./21. April in Dresden statt. Weitere Infos hier
Zur Homepage des Deutschsprachige Xbase-Entwickler e. V.
Xbase++-Wiki des Deutschsprachige Xbase-Entwickler e. V.

MS SQL Eigenheit....

Alles zum PostgreSQL-Server

Moderator: Moderatoren

Antworten
Benutzeravatar
satmax
1000 working lines a day
1000 working lines a day
Beiträge: 779
Registriert: Do, 02. Dez 2010 19:34
Wohnort: Biberbach in Österreich
Kontaktdaten:

MS SQL Eigenheit....

Beitrag von satmax » Sa, 21. Feb 2015 16:21

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: 1933
Registriert: Fr, 08. Feb 2008 21:29

Re: MS SQL Eigenheit....

Beitrag von georg » Sa, 21. Feb 2015 17:24

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

Benutzeravatar
satmax
1000 working lines a day
1000 working lines a day
Beiträge: 779
Registriert: Do, 02. Dez 2010 19:34
Wohnort: Biberbach in Österreich
Kontaktdaten:

Re: MS SQL Eigenheit....

Beitrag von satmax » Sa, 21. Feb 2015 21:02

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