![]() |
Re: SQL Abfrage - Datum zwischen X und Y
Wenn jedes Byte mit führenden Nullen geschrieben ist ja, sonst wohl eher nein.
|
Re: SQL Abfrage - Datum zwischen X und Y
Die möglichen Beispiele die oben genannt worden sind wie beispielsweise mit Markos konnte ich nicht ganz nachvollziehen.
Ich zeige euch mal nochmal anhand meines Quellcodes wie es aussehen sollte.
Delphi-Quellcode:
jetzt bräuchte ich nur noch die richtige Syntax dafür, dass mein Compiler damit auch was anfangen kann.^^
if DateFromEdit.text <> '' then
begin SmartQuery1.SQL.Add('{ DateFromEdit.Text bis ENDE} '); SmartQuery1.ParamByName('').AsString := DateFromEdit.Text; end; if DateUntilEdit.Text <> '' then begin SmartQuery1.SQL.Add('{DateFromEdit.Text bis DateUntilEdit.Text OR ANFANG bis DateUntilEdit.Text}'); SmartQuery1.ParamByName('').asString := DateUntilEdit.Text; Gruß Major |
Re: SQL Abfrage - Datum zwischen X und Y
Du mischst Delphi mit SQL: Kommentare werden in SQL mit '/*' und '*/' geklammert oder eine ganze Zeile mit '--' auskommentiert.
Grüße Mikhal Edit: Schreibfehler... |
Re: SQL Abfrage - Datum zwischen X und Y
Delphi-Quellcode:
je nachdem wie das abzufragende Feld heißt mußt Du fromdate und untildate durch die richtigen namen ersetzen.
if DateFromEdit.text <> '' then
begin if DateUntilEdit.Text <> '' then begin SmartQuery1.SQL.Add(' and fromdate>=:ANFANG and untildate<=:ENDE); SmartQuery1.ParamByName('ANFANG').asString := DateUntilEdit.Text; SmartQuery1.ParamByName('ENDE').asString := DateUntilEdit.Text; end else begin SmartQuery1.SQL.Add(' and fromdate>=:ANFANG '); SmartQuery1.ParamByName('ANFANG').asString := DateUntilEdit.Text; end; und nach dieser Aktion darfst Du keine weiteren Veränderungen am SQL-Text vornehmen (soweit ich weiß!) ggf. mußt Du die Generierung des SQL-Textes und die Parameterübergabe dann aufteilen. ist das .asString erst gemeint?? das halte ich nicht für empfehlenswert da es ja viele unterschiedliche Möglichkeiten gibt ei Datum darzustellen. Einzig mit YYYYMMDD könnte man das halbwegs ordentlch machen. Gruß K-H |
Re: SQL Abfrage - Datum zwischen X und Y
*hust*
Ich weiß nicht, aber wenn ich mit Kalenderdaten um mich schmeißen muss, dann bietet sich doch im GUI ein TDateTimePicker an und in der Datenbank ein (oder in diesem Falle zwei) Felder vom Typ "DATE". (So denn Oracle so einen Typen kennt...). |
Re: SQL Abfrage - Datum zwischen X und Y
@Daniel G
Naja der tDateTimepicker ist nicht jedermans Sache (ich bin da bei enem Anwender hochkant aus dem Büro geflogen) aber Du hast schon recht (oracle hat einen Datumstypen) so früh wie möglich auf Datumstypen gehen, damit's da keine Probleme gibt. Gruß K-H |
Re: SQL Abfrage - Datum zwischen X und Y
Das gilt grundsätzlich für alle Daten, wenn möglich die entsprechenden Typen verwenden. Mit dem Motto: "Ein String nimmt alles auf" fällt man schnell auf die Schnauze!
|
Re: SQL Abfrage - Datum zwischen X und Y
Zitat:
|
Re: SQL Abfrage - Datum zwischen X und Y
[OT]
na ja, nach alter Väter Sitte über die Tastatur.... (ist man halt so gewohnt) und ich hatte die Eingabeüberprüfung an der Backe (Das wäre mal eine Aufgabenstellung für den Informatikunterricht!) [/OT] Gruß K-H |
Re: SQL Abfrage - Datum zwischen X und Y
@p80286
danke für deine Lösung aber ich muss nur ein Feld abfragen da gibts keine zwei unterschiedliche Namen, nur einen. Kann von diesem PC aus nicht das Projekt pflegen, könntest du mir aber trotzdem schreiben ob man es so schreiben kann.
Delphi-Quellcode:
....
SmartQuery1.SQL.Add(' and date >= :ANFANG and date <= :ENDE); .... else .... SmartQuery1.SQL.Add(' and date >=:ANFANG '); ... |
Alle Zeitangaben in WEZ +1. Es ist jetzt 17:01 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