AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Datenbanken Delphi Datum berechnen mit InterBase
Thema durchsuchen
Ansicht
Themen-Optionen

Datum berechnen mit InterBase

Ein Thema von cugar · begonnen am 20. Mai 2010 · letzter Beitrag vom 26. Mai 2010
Antwort Antwort
cugar

Registriert seit: 6. Jan 2007
149 Beiträge
 
Delphi XE Professional
 
#1

Datum berechnen mit InterBase

  Alt 20. Mai 2010, 13:21
Datenbank: InterBase • Version: 7.5 • Zugriff über: Delphi Prof. 2006
Hallo,
suche schon 2 Stunden bei google und nix
Habe ein (hoffentlich)einfaches Problem.
Meine Tabelle enthält ua. folgende Felder: MTStart, MTLaufzeit.

Beispiel:
MTStart = 19.05.2010
MTLaufzeit = 24 (Monate)

Wie muss meine select aussehen, um ein Feld zu erhalten zb Enddatum = 19.05.2012 ???
Hab schon mit extract experimentiert, komme aber nicht dahinter, sowas wie ADD_MONTH kennt interbase wohl nicht...

PS. Es wäre über Delphi ohne sql lösbar, möchte es gerne aber über die Abfrage machen.

Viele Grüsse
Andreas
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

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

Re: Datum berechnen mit InterBase

  Alt 20. Mai 2010, 13:25
Schaur dir mal die UDF Bibliothek von Interbase mal an
Markus Kinzler
  Mit Zitat antworten Zitat
Lemmy

Registriert seit: 8. Jun 2002
Ort: Berglen
2.381 Beiträge
 
Delphi 10.4 Sydney
 
#3

Re: Datum berechnen mit InterBase

  Alt 20. Mai 2010, 14:11
Hi,

ich weiß nicht was du damit erreichen willst, aber was spricht denn gegen ein

Select (MTStart+(365*MTLaufzeit/12) FROM XYZ; Schaltjahre fallen hier halt unter den Tisch.... Wenn das kein Problem darstellt ist das sicherlich das einfachste...

Grüße
  Mit Zitat antworten Zitat
Benutzerbild von dataspider
dataspider

Registriert seit: 9. Nov 2003
Ort: 04539 Groitzsch
1.351 Beiträge
 
Delphi 11 Alexandria
 
#4

Re: Datum berechnen mit InterBase

  Alt 20. Mai 2010, 14:39
Hi,

wenn Interbase Mod kennt (notfalls die udf einbinden), dann wäre das mein Ansatz:

SQL-Code:
select
  current_date
, extract(day from current_date)
, mod((extract(year from current_date) * 12 + extract(month from current_date) + 24), 12)
, trunc((extract(year from current_date) * 12 + extract(month from current_date) + 24) /12)
from rdb$database
Ich habe hier mal 24 Monate auf das aktuelle Datum addiert.
Ich gehe davon aus, dass der Tag der gleiche ist.
Wenn du das wieder zusammensetzt und castest, erhältst du das Datum.

Frank

[Edit]Grrr... Wenn Monat 12 ist, kommt hier 0 raus. Dann muss noch ein Case rein. Eigentlich schon ein Fall für eine Stored Procedure.
Bei den Udf' s gibt es noch AddMonth, ich versuche aber immer, ohne Udf' s auszukommen [sicherlich eine unnötige Macke von mir ]
[/EDIT]
Frank Reim
  Mit Zitat antworten Zitat
cugar

Registriert seit: 6. Jan 2007
149 Beiträge
 
Delphi XE Professional
 
#5

Re: Datum berechnen mit InterBase

  Alt 20. Mai 2010, 18:25
Danke euch für die schnelle Hilfe!
Wozu ich es brauche?
Die Tabelle zeigt mir alle laufenden Mietverträge, soll das Ende zeigen und automatisch warnen wenn ein Vertrag zB in 3 Monaten endet. Ich möchte es über SQL machen, weil ich dann das Enddatum wie alle anderen auch sortieren kann. Ansonsten hätte ich nur die Möglichkeit über Delphi's Berechnete-Felder. Glaube bei Verträgen sind die Schaltjahre wichtig, sonst hätte ich den Vorschlag von Lemmy übernommen (da stimmte der Tag nicht nach 24 Monaten Start 24.05.2010 Laufzeit:24 Monate Ende:23.05.2012)

Finde schade das Interbase keine einfacheren Wege bereitstellt um Datumsberechnungen durchzuführen.

Viele Grüsse
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

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

Re: Datum berechnen mit InterBase

  Alt 20. Mai 2010, 19:04
Die UDF Bibliothek ist doch bei IB dabei. Du musst die Funktionen nur aktivieren (entsprechendes SQL-Skript ausführen). Auf UDFs kannst du dann genauso zugreifen wie auf "BuiltIn" Funktionen
Markus Kinzler
  Mit Zitat antworten Zitat
cugar

Registriert seit: 6. Jan 2007
149 Beiträge
 
Delphi XE Professional
 
#7

Re: Datum berechnen mit InterBase

  Alt 26. Mai 2010, 07:53
Zitat von mkinzler:
Die UDF Bibliothek ist doch bei IB dabei. Du musst die Funktionen nur aktivieren (entsprechendes SQL-Skript ausführen). Auf UDFs kannst du dann genauso zugreifen wie auf "BuiltIn" Funktionen
Hab früher nur mit Paradox zu tun gehabt. Interbase ist noch Neuland für mich, das ich täglich neu enddecke.

In der Datei ib_udf.sql befindet sich MOD:
* m o d
*
*****************************************
*
* Functional description:
* Returns the remainder part of the
* division of the two input parameters.
*
*****************************************/
DECLARE EXTERNAL FUNCTION mod
INTEGER, INTEGER
RETURNS DOUBLE PRECISION BY VALUE
ENTRY_POINT 'IB_UDF_mod' MODULE_NAME 'ib_udf';


Dann noch sowas:

LIBRARY udflib
DESCRIPTION 'udflib.dll'
DATA READ WRITE
EXPORTS
fn_abs
fn_add2
fn_blob_bytecount
fn_blob_linecount
fn_blob_substr
fn_dow
fn_doy
fn_fact
fn_lower_c
fn_max
fn_moy
fn_mul
fn_sqrt
fn_strcat
fn_substr
fn_sysdate
fn_trim
fn_trunc

Sind es die Dateien mit den Zusatzfunktionen? Lohnt es sich diese einzubinden um meine Monate zu rechnen oder wäre einfacher das Prog. etwas zu verändern? Anstatt wie jetzt Startdatum und Laufzeit --> Startdatum und Enddatum zu nehmen.
Mache ich es lieber, glaube ich, so. Wenn ich das Enddatum habe, kann ich eine Warnung ausgeben wenn das Enddatum minus zB.90 Tage erreicht wurde.

Viele Grüsse
Andreas
  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 08:53 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