AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Datenbanken Umstellung auf SQL-Filterung
Thema durchsuchen
Ansicht
Themen-Optionen

Umstellung auf SQL-Filterung

Ein Thema von Crowbar · begonnen am 21. Jul 2014 · letzter Beitrag vom 21. Jul 2014
Antwort Antwort
Crowbar

Registriert seit: 17. Jun 2002
43 Beiträge
 
#1

AW: Umstellung auf SQL-Filterung

  Alt 21. Jul 2014, 14:58
Ist RESTELLUNG ein Stringfeld?
Nein, ein DATE Feld.
Aber warum behandelst du es dann wie Eines?

Tage := DaysBetween(Now, DBBuchungSQLQuery.FieldByName('RESTELLUNG').AsDataTime);

Jetzt nur noch in der entsprechenden DBMS-Doku nachsehen, wie sich die Funktion nennt, mit welcher man Datumsdifferenzen ausrechnen kann.


Und das DBBuchungTable.FieldByName('RESTELLUNG').AsString = '' sollte wohl auch ein DBBuchungTable.FieldByName('RESTELLUNG').IsNull darstellen.
... das ist alles einwenig unsauber programmiert ... deswegen auch meine Überarbeitung und gleichzeitiges Umsetzen auf SQL.

SQL-Code:
WHERE KATEGORIE = 'Einnahmen'
AND RESTELLUNG is not null
AND REEINGANG is null
AND DATEDIFF(day, NOW(), RESTELLUNG) >= 14
... Danke, das war schon fast die Lösung.
WHERE KATEGORIE = "Einnahmen" AND RESTELLUNG is not null AND REEINGANG is null Dieser SQL-Befehl klappt wunderbar, natürlich ohne diese 14 Tage-Berücksichtigung.

Sobald ich aber den gesamten Befehl benutze:

WHERE KATEGORIE = "Einnahmen" AND RESTELLUNG is not null AND REEINGANG is null AND DATEDIFF(day, NOW(), RESTELLUNG) >= 14 ... erhalte ich eine Fehlermeldung, die heißt:

...Boolean expression expectedt, but 'DATEDIFF' found..."
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

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

AW: Umstellung auf SQL-Filterung

  Alt 21. Jul 2014, 15:00
Deswegen sollst Du ja in die Doku zu Deiner DB schauen, welche Datumsfunktionen es da gibt. Was ist das denn: dBase, FoxPro?
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
Crowbar

Registriert seit: 17. Jun 2002
43 Beiträge
 
#3

AW: Umstellung auf SQL-Filterung

  Alt 21. Jul 2014, 15:06
Deswegen sollst Du ja in die Doku zu Deiner DB schauen, welche Datumsfunktionen es da gibt. Was ist das denn: dBase, FoxPro?
Zum Austesten, ob alles so funktioniert wie ich es mir vorstelle, benutze ich derzeitig die Trialversion von "Absolute Database".
Hier scheint es den Befehl "DATEDIFF" nicht zu geben.

Geändert von Crowbar (21. Jul 2014 um 15:22 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

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

AW: Umstellung auf SQL-Filterung

  Alt 21. Jul 2014, 15:24
Scheint so. Ich konnte auf die Schnelle keine Übersicht der enthaltenen Funktionen finden, vielleicht ist es das Beste, das Datum am Client zu errechnen und als SQL-Parameter zu übergeben.
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
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.879 Beiträge
 
Delphi 11 Alexandria
 
#5

AW: Umstellung auf SQL-Filterung

  Alt 21. Jul 2014, 15:43
Recht übersichtlich
Zitat von Datumsfunktionen:
Function
Description

CURRENT_DATE
Returns the current date

CURRENT_TIME
Returns the current time

CURRENT_TIMESTAMP
Returns the current local date and local time as a timestamp value

NOW
Returns current date and time as a timestamp value

SYSDATE
Returns current date and time as a timestamp value

TOSTRING
Converts date and time to string

TODATE
Converts string to date and time

EXTRACT
Extracts datepart component from datetime value as INTEGER
Markus Kinzler
  Mit Zitat antworten Zitat
Benutzerbild von p80286
p80286

Registriert seit: 28. Apr 2008
Ort: Stolberg (Rhl)
6.659 Beiträge
 
FreePascal / Lazarus
 
#6

AW: Umstellung auf SQL-Filterung

  Alt 21. Jul 2014, 16:06
Unter Umständen geht es ja auch so
Zitat:
AND NOW()-RESTELLUNG >= 14
wobei 14 naürlich durch den Timestamp-wert für 14 Tage ersetzt werden muß

Gruß
K-H
Programme gehorchen nicht Deinen Absichten sondern Deinen Anweisungen
R.E.D retired error detector
  Mit Zitat antworten Zitat
Crowbar

Registriert seit: 17. Jun 2002
43 Beiträge
 
#7

AW: Umstellung auf SQL-Filterung

  Alt 21. Jul 2014, 16:19
Unter Umständen geht es ja auch so
Zitat:
AND NOW()-RESTELLUNG >= 14
wobei 14 naürlich durch den Timestamp-wert für 14 Tage ersetzt werden muß

Gruß
K-H
Aus irgendeinen Grund benötige ich garkeinen Timestamp-Wert für die "14".
Mit dem SQL-Befehl:
SELECT * FROM Buchung WHERE KATEGORIE = "Einnahmen" AND RESTELLUNG is not null AND REEINGANG is null AND (NOW-RESTELLUNG > 14) klappt nun alles wie gewollt.
Vielen Dank an alle ... nun konnte ich wieder mein kleines SQL-Wissen erweitern.
  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 09:24 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