Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   Delphi Between liefert keine Ergebnisse (https://www.delphipraxis.net/171474-between-liefert-keine-ergebnisse.html)

Captnemo 7. Nov 2012 21:22

Datenbank: MSSQL Express Edition • Version: 2005 • Zugriff über: ADO

Between liefert keine Ergebnisse
 
Hi,

ich will alle Einträg innerhalb eines bestimmten Zeitraums abfragen.

Grundsätzlich sollte das ja gehen mit

Code:
Select * from Tabelle where datum between :anfang and :ende
Allerdings liefert mir das mit Anfang=01.01.2012 und ende=31.01.2012 keine Ergibnismenge

Wenn ich aber z.B.

Code:
Select * from Tabelle where datum=:anfang
ausführe, dann erhalte ich entsprechende Einträge (anfang=10.01.2012), aber halt nur von dem Datum. Diese hätte eigentlich schon in der Anfrage mit between erscheinen müssen.

Das Datum-Feld in der Tabelle ist vom Typ DateTime.

Hat einer eine Idee?

vagtler 7. Nov 2012 21:42

AW: Between liefert keine Ergebnisse
 
Warum man das nicht mit DateTime machen sollte: http://www.kebabshopblues.co.uk/2009...l-server-2005/

Furtbichler 8. Nov 2012 06:30

AW: Between liefert keine Ergebnisse
 
Was hat die Problemstellung mit dem Artikel zu tun? Der verlinkte Artikel beschreibt Fallstricke bei der Abfrage mit BETWEEN und Datumswerten vor dem 1.1.1900.

Bei dem konkreten Problem muss der Grund etwas Banales und 'Dummes' sein. Ich kenne Probleme dieser Art nur im Zusammenhang mit falsch formatierten oder falsch parametrierten Queries (z.B. Anfang>Ende).

Beides scheint hier aber nicht der Fall zu sein.

Hast Du die Query mal im SSMS abgesetzt?

Wie sieht der Delphi-Quellcode aus?

Bummi 8. Nov 2012 06:47

AW: Between liefert keine Ergebnisse
 
vielleicht beim setzen der Parameter diese vertauscht, oder 2* den gleichen Wert genommen.

Bernhard Geyer 8. Nov 2012 07:16

AW: Between liefert keine Ergebnisse
 
Was sagt der MS SQL Profiler?

vagtler 8. Nov 2012 07:26

AW: Between liefert keine Ergebnisse
 
Zitat:

Zitat von Furtbichler (Beitrag 1190259)
Was hat die Problemstellung mit dem Artikel zu tun? Der verlinkte Artikel beschreibt Fallstricke bei der Abfrage mit BETWEEN und Datumswerten vor dem 1.1.1900. [...]

Dann hast Du den Artikel schlicht und ergreifend nicht (vollständig) gelesen.

mkinzler 8. Nov 2012 07:30

AW: Between liefert keine Ergebnisse
 
Das wäre eine Erklärung, wenn Werte der "Grenztage" fehlen würden, diese würden aber auch bei der Abfrge nur eines Tages fehlen.

vagtler 8. Nov 2012 07:34

AW: Between liefert keine Ergebnisse
 
Eine Umstellung wie in dem Blog-Beitrag empfohlen würde aber eventuell das bestehende Problem direkt mit beseitigen. ;)

Ansonsten gebe ich Dir aber recht.

Captnemo 8. Nov 2012 10:38

AW: Between liefert keine Ergebnisse
 
Der Fehler war meine eigene Dummheit :oops::oops:

Ich war in der leichtsinnigen Annahme, das ich als DataType auch ftDate verwenden kann (in Delphi ja kein Problem).
Der MSSQL-Server kennt (zumindest in der 2005er Version) nur den Datentyp DateTime. Und gezwungenermaßen muß man in dann im Query auch als solchen definiert, also als ftDateTime. Dann klappt's auch.

Habe lange mit MySQL gearbeitet, welches sowas wenn ich mich recht erinnere ohne murren macht.

DanielJ 8. Nov 2012 13:39

AW: Between liefert keine Ergebnisse
 
Hallo

ich verwende nach einigen Nicklichkeiten mit between auf unterschiedlichen RDBMS immer:

Code:
Select * from Tabelle where datum>=:FromIncluding and datum<:TillNotIncluding
Das funktioniert auf allen Systemen, auch mit Zeitanteilen immer sauber. Und ganz ehrlich, soo viel mehr Tipparbeit ist das auch nicht.

LG,
Daniel

vagtler 8. Nov 2012 14:11

AW: Between liefert keine Ergebnisse
 
Womit wir uns jetzt wieder im Kreis drehen und bei Beitrag #2 dieses Threads wären...


Alle Zeitangaben in WEZ +1. Es ist jetzt 16:08 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz