![]() |
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:
Allerdings liefert mir das mit Anfang=01.01.2012 und ende=31.01.2012 keine Ergibnismenge
Select * from Tabelle where datum between :anfang and :ende
Wenn ich aber z.B.
Code:
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.
Select * from Tabelle where datum=:anfang
Das Datum-Feld in der Tabelle ist vom Typ DateTime. Hat einer eine Idee? |
AW: Between liefert keine Ergebnisse
Warum man das nicht mit DateTime machen sollte:
![]() |
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? |
AW: Between liefert keine Ergebnisse
vielleicht beim setzen der Parameter diese vertauscht, oder 2* den gleichen Wert genommen.
|
AW: Between liefert keine Ergebnisse
Was sagt der MS SQL Profiler?
|
AW: Between liefert keine Ergebnisse
Zitat:
|
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.
|
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. |
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. |
AW: Between liefert keine Ergebnisse
Hallo
ich verwende nach einigen Nicklichkeiten mit between auf unterschiedlichen RDBMS immer:
Code:
Das funktioniert auf allen Systemen, auch mit Zeitanteilen immer sauber. Und ganz ehrlich, soo viel mehr Tipparbeit ist das auch nicht.
Select * from Tabelle where datum>=:FromIncluding and datum<:TillNotIncluding
LG, Daniel |
Alle Zeitangaben in WEZ +1. Es ist jetzt 15:41 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz