AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Datenbanken Delphi Komisches Verhalten von SQL Abfrage
Thema durchsuchen
Ansicht
Themen-Optionen

Komisches Verhalten von SQL Abfrage

Ein Thema von TurboMagic · begonnen am 25. Sep 2025 · letzter Beitrag vom 26. Sep 2025
Antwort Antwort
TurboMagic

Registriert seit: 28. Feb 2016
Ort: Nordost Baden-Württemberg
3.108 Beiträge
 
Delphi 12 Athens
 
#1

Komisches Verhalten von SQL Abfrage

  Alt 25. Sep 2025, 19:59
Datenbank: Firebird • Version: 5.0 • Zugriff über: FireDAC
Hallo,

ich habe einen Select der im Where sowas beinhaltet:

Delphi-Quellcode:
    (BK.BON_ENDE >= :pStartDate) and
    (BK.BON_ENDE <= :pEndDate)
Später mach' ich sowas:

FQuery.ParamByName('pStartDate').AsDate := StartDate;
FQuery.ParamByName('pEndDate').AsDate := EndeDate;

Wobei StartDate und EndeDate TDateTime Variablen sind.
StartDate ist '30.12.1899' und EndeDate wird auf Now gesetzt.

Die letzte Buchung in der DB war schon vor mehr als einer Stunde,
wird aber nicht berücksichtigt. Führe ich die selbe Abfrage in einem
Datenbank Management Programm aus wird diese letzte Buchung mit
berücksichtigt.

Genauso, wenn ich im Delphi Programm EndeDate auf Now+0.3 setze.
Bei Now+0.1 wird diese Buchung noch nicht berücksichtigt.

Irgendwelche Ideen warum das so ist?
Grüße
TurboMagic
  Mit Zitat antworten Zitat
EKON 29
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.673 Beiträge
 
Delphi 12 Athens
 
#2

AW: Komisches Verhalten von SQL Abfrage

  Alt 25. Sep 2025, 20:13
Und wenn du AsDateTime verwendest, damit die Uhrzeit auch berücksichtigt wird?
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
TurboMagic

Registriert seit: 28. Feb 2016
Ort: Nordost Baden-Württemberg
3.108 Beiträge
 
Delphi 12 Athens
 
#3

AW: Komisches Verhalten von SQL Abfrage

  Alt 25. Sep 2025, 20:20
Und wenn du AsDateTime verwendest, damit die Uhrzeit auch berücksichtigt wird?
Hm, was wür'd ich nur ohne dich Genie machen?
Ja, das funktioniert!!!
Grüße
TurboMagic
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu
Online

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.782 Beiträge
 
Delphi 12 Athens
 
#4

AW: Komisches Verhalten von SQL Abfrage

  Alt 25. Sep 2025, 20:26
Was für einen Typ haben die Parameter,
welchen das Datumsfeld
und was ist mit der Zeitzone?

Gibt es Buchungen in der Zukunft?
xx.ParamByName('pEndDate').AsDateTime := EndOfTheDay(Now);


PS: Firebird sollte doch auch sowas kennen?
where BK.BON_ENDE between :pStartDate and :pEndDate
Ein Therapeut entspricht 1024 Gigapeut.

Geändert von himitsu (Gestern um 09:08 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von IBExpert
IBExpert

Registriert seit: 15. Mär 2005
700 Beiträge
 
FreePascal / Lazarus
 
#5

AW: Komisches Verhalten von SQL Abfrage

  Alt Gestern, 06:04
PS: Firebird sollte doch auch sowas kennen?
where BK.BON_ENDE between :pStartDate and :pEndDate
ja, Firebird kennt es schon lange wenn man den sql so aufbaut
Holger Klemt
www.ibexpert.com - IBExpert GmbH
Oldenburger Str 233 - 26203 Wardenburg - Germany
Firebird 5 Update und Know-how Workshop – 28.8.-29.08.2025 64546 Mörfelden - Walldorf
  Mit Zitat antworten Zitat
Blup

Registriert seit: 7. Aug 2008
Ort: Brandenburg
1.498 Beiträge
 
Delphi 12 Athens
 
#6

AW: Komisches Verhalten von SQL Abfrage

  Alt Gestern, 07:06
Aus der Frage und den Antworten kann man schlussfolgern das "BK.BON_ENDE" vom Type Timestamp ist.
Durch die Übergabe des Parameters mit ".AsDate" wurde der Zeitanteil von "Now" abgeschnitten.
Deshalb wurden nur Belege zurückgegeben, die bis zum Vortag oder am aktuellen Tag genau 0:00:00 Uhr erstellt wurden.

Wenn mit den Parametern tatsächlich nur auf Datum und nicht auf Uhrzeit eingeschränkt werden soll, muss "BK.BON_ENDE" vor dem Vergleich in ein Datum umgewandelt werden.
SQL-Code:

where cast(BK.BON_ENDE as date) between :pStartDate and :pEndDate

Geändert von Blup (Gestern um 07:08 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.673 Beiträge
 
Delphi 12 Athens
 
#7

AW: Komisches Verhalten von SQL Abfrage

  Alt Gestern, 09:59
Naja, die Aussage
Zitat:
Die letzte Buchung in der DB war schon vor mehr als einer Stunde,
wird aber nicht berücksichtigt. Führe ich die selbe Abfrage in einem
Datenbank Management Programm aus wird diese letzte Buchung mit
berücksichtigt.
legt schon nahe, dass die Uhrzeit eine Rolle spielt.
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 19:15 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-2025 by Thomas Breitkreuz