AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Datenbanken Delphi Datumsfunktionen bei Firebird
Thema durchsuchen
Ansicht
Themen-Optionen

Datumsfunktionen bei Firebird

Ein Thema von buyden · begonnen am 4. Apr 2005 · letzter Beitrag vom 11. Apr 2005
Antwort Antwort
Seite 1 von 2  1 2      
Benutzerbild von buyden
buyden

Registriert seit: 10. Apr 2003
Ort: Schneeberg
228 Beiträge
 
Delphi 7 Enterprise
 
#1

Datumsfunktionen bei Firebird

  Alt 4. Apr 2005, 11:03
Datenbank: Firebird • Version: 1.5 • Zugriff über: ZEOS
Hi,

ich hab mal wieder ein Problem mit Firebird SQL:

ich möchte nen Tagesdurchschnitt des aktuellen Monats berechnen und hab dazu folgenden code

Delphi-Quellcode:
 with frmdata.qustat17 do
    begin
      close;
      sql.Clear;
      sql.add('SELECT (1.000 * COUNT(nummer)) / (COUNT(DISTINCT eingangsdatum)) FROM auftrag WHERE EXTRACT(MONTH FROM eingangsdatum)= ' + inttostr(monthof(date))+';');
      open;
    end;
leider bekomm ich immer nen arithmetischen Fehler von Firebird.
"Eingangsdatum" ist DATE.

einfach month(eingangsdatum) möchte Firebird ja gar nicht.

das nächste query braucht die aktuelle Woche.

Ideen??
Es gibt keine dummen Fragen, außer die von mir


MFG BUYDEN
  Mit Zitat antworten Zitat
omata

Registriert seit: 26. Aug 2004
Ort: Nebel auf Amrum
3.154 Beiträge
 
Delphi 7 Enterprise
 
#2

Re: Datumsfunktionen bei Firebird

  Alt 4. Apr 2005, 22:19
Moin,

der arithmetische Fehler tritt auf, wenn das Ergebnis keine Zeilen enthält (also durch Null geteilt wird). Eigentlich hätte ich erwartet, dass es dann keine Zeile gibt. Firebird sieht das aber leider anders. Man kann dieses Verhalten aber erzwingen...

SQL-Code:
SELECT (1.000 * COUNT(nummer)) / (COUNT(DISTINCT eingangsdatum))
FROM auftrag
WHERE EXTRACT(MONTH FROM eingangsdatum) = :monat
HAVING COUNT(DISTINCT eingangsdatum) > 0
MfG
Thorsten
  Mit Zitat antworten Zitat
Benutzerbild von buyden
buyden

Registriert seit: 10. Apr 2003
Ort: Schneeberg
228 Beiträge
 
Delphi 7 Enterprise
 
#3

Re: Datumsfunktionen bei Firebird

  Alt 5. Apr 2005, 13:25
OK, nen Fehler bringt Firebird jetzt zwar nicht mehr aber irgendwie stimmt das Ergebnis auch nicht.

bei 12 aufträgen in 3 tagen (im aktuellen Monat) sollte doch eigentlich 4 rauskommen, das Query liefert aber 2,666 zurück.
Es gibt keine dummen Fragen, außer die von mir


MFG BUYDEN
  Mit Zitat antworten Zitat
omata

Registriert seit: 26. Aug 2004
Ort: Nebel auf Amrum
3.154 Beiträge
 
Delphi 7 Enterprise
 
#4

Re: Datumsfunktionen bei Firebird

  Alt 5. Apr 2005, 19:55
Moin,

tja ich hatte zwar einbißchen herumprobiert, hatte das Problem so nicht gesehen.
Schade, war nur ein Versuch Firebird zu zwingen das Richtige zu tun.
Da das scheinbar nicht geht, musst du wohl anders daran gehen.
Teste doch einfach vorher, ob es Einträge für den Monat gibt, also COUNT(DISTINCT eingangsdatum)) > 0 ist. Wenn ja, dann machst du deine Abfrage (ohne den HAVING-Teil).

MfG
Thorsten
  Mit Zitat antworten Zitat
Benutzerbild von buyden
buyden

Registriert seit: 10. Apr 2003
Ort: Schneeberg
228 Beiträge
 
Delphi 7 Enterprise
 
#5

Re: Datumsfunktionen bei Firebird

  Alt 7. Apr 2005, 10:28
Hi,

ich hab das ganze jetzt umgangen, indem ich nur die einzelnen Werte per SQL abfrage und dann mit den entsprechenden Variablen rechne. nicht gerade Speicherschonend aber zweckmäßig.

Jetzt hab ich nur noch das Problem, das Firebird nicht die Woche aus dem Datum extrahieren kann.

Delphi-Quellcode:
  with frmdata.qustat3 do
    begin
      close;
      sql.Clear;
      sql.Add('SELECT COUNT(nummer)
FROM auftrag
WHERE EXTRACT(WEEK FROM ausgangsdatum)=
'+inttostr(woche)+' ;');
      open;
    end;
Ist mir langsam zu dumm wegen jedem Misst nachzufragen aber ich hab noch keine Dokumentation von Firebird SQL, die nicht 50€ kostet, gefunden.
Es gibt keine dummen Fragen, außer die von mir


MFG BUYDEN
  Mit Zitat antworten Zitat
Benutzerbild von kiar
kiar

Registriert seit: 2. Aug 2003
Ort: Aschersleben
1.362 Beiträge
 
Delphi 5 Professional
 
#6

Re: Datumsfunktionen bei Firebird

  Alt 7. Apr 2005, 11:28
hallo, ich weis jetzt nicht, ob firebird das schon implementiert hat, aber für den Interbase gab es eine funktion in der Free udf lib .

vielleicht findest du Hierhier etwas.

raik
verhältnisse die einem nicht passen,
muss man verändern oder verlassen
  Mit Zitat antworten Zitat
Benutzerbild von buyden
buyden

Registriert seit: 10. Apr 2003
Ort: Schneeberg
228 Beiträge
 
Delphi 7 Enterprise
 
#7

Re: Datumsfunktionen bei Firebird

  Alt 7. Apr 2005, 15:39
Es muss doch irgendwo ne brauchbare Referenz über die SQL-Funktionen in Firebird geben. Für MySQL findet man tonnenweise Informationen aber leider nicht für Firebird.

Auf deinem Link assoziieren die Firebird ausschließlich mit nem Auto - ist also nich wirklich hilfreich.
Es gibt keine dummen Fragen, außer die von mir


MFG BUYDEN
  Mit Zitat antworten Zitat
Benutzerbild von kiar
kiar

Registriert seit: 2. Aug 2003
Ort: Aschersleben
1.362 Beiträge
 
Delphi 5 Professional
 
#8

Re: Datumsfunktionen bei Firebird

  Alt 7. Apr 2005, 16:17
hallo,

dann bastele dir ebend eine Funktion

hier findest du eine anleitungich mache mir eine Funktion

raik
verhältnisse die einem nicht passen,
muss man verändern oder verlassen
  Mit Zitat antworten Zitat
Benutzerbild von buyden
buyden

Registriert seit: 10. Apr 2003
Ort: Schneeberg
228 Beiträge
 
Delphi 7 Enterprise
 
#9

Re: Datumsfunktionen bei Firebird

  Alt 11. Apr 2005, 16:12
kann man denn die IB FreeUdfLib auch in Firebird einbinden??
die .dll hab ich jedenfalls schonmal in meinen UDF-Ordner des Embedded-Servers geschubst.
Wie sag ich denn jetzt aber Firebird, das es ne Funktion aus der extra-.dll verwenden soll??
Es gibt keine dummen Fragen, außer die von mir


MFG BUYDEN
  Mit Zitat antworten Zitat
Benutzerbild von kiar
kiar

Registriert seit: 2. Aug 2003
Ort: Aschersleben
1.362 Beiträge
 
Delphi 5 Professional
 
#10

Re: Datumsfunktionen bei Firebird

  Alt 11. Apr 2005, 16:28
zu mindestens funktionieren die funktionen bei mir und ich habe die .dll in einer Firebird 1.5 drin.

also einfach in ibexpert das script ib_udf.sql ausführen und fertig

hier ist aber keine KW function drin.

raik
verhältnisse die einem nicht passen,
muss man verändern oder verlassen
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


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 18:18 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