Einzelnen Beitrag anzeigen

smudo

Registriert seit: 6. Sep 2005
Ort: Cottbus
362 Beiträge
 
Delphi XE2 Professional
 
#3

Re: Jahrestage innerhalb der nächsten x Tage abfragen

  Alt 13. Okt 2006, 16:27
Ich hab mir mal ein paar SPs dafür gebastelt, mit denen ich an daa Ergebnis komme:

SQL-Code:
ALTER PROCEDURE CHANGEYEAR (
    OLDDATE DATE,
    NEWYEAR INTEGER)
RETURNS (
    NEWDATE DATE)
AS
begin
  NEWDATE = cast((extract(day from OLDDATE) || '.' || extract(month from OLDDATE) || '.' || NEWYEAR) as date);
  suspend;
end
Ändert das Jahr eines Datums auf NewYear

SQL-Code:
ALTER PROCEDURE GETRELATIVEDATE (
    BASICDATE DATE,
    COMPAREDATE DATE)
RETURNS (
    OUTDATE DATE)
AS
begin
  select newdate from CHANGEYEAR(:BASICDATE, 2000) into BASICDATE;
  select newdate from CHANGEYEAR(:COMPAREDATE, 2000) into OUTDATE;
  if (OUTDATE < BASICDATE) then
    select newdate from CHANGEYEAR(:OUTDATE, 2004) into OUTDATE;
  suspend;
end
hängt bei in der Vergangenheit liegenden Jahrestagen das Jahr 2004 bei allen ab heute eine 2000 an.
2000 und 2004 wegen Schaltjahr, um eventuelle 29.2. umwandeln zu können.


SQL-Code:
ALTER PROCEDURE GETNEXTDAYS (
    MAXDATES INTEGER,
    STARTDAT DATE)
RETURNS (
    NAME VARCHAR(35),
    DATUM DATE)
AS
DECLARE VARIABLE COUNTER INTEGER;
begin
  COUNTER = 0;

  for select p.NAME, p.DATUM
  from PERSONDATES p
  order by (select outdate from GETRELATIVEDATE(current_date, p.DATUM))
  into :NAME, :DATUM
  do
  begin
    if (COUNTER < MAXDATES) then suspend;
    COUNTER = :COUNTER + 1;
  end
end
Liefert mir die nächsten x Ereignisse. Das ganze auf die nächsten x Tage zu beschränken, sollte damit ebenfalls kein Problem sein.

Falls das jemand viel zu umständlich findet und 'ne bessere Idee hat: Immer her damit.

René
  Mit Zitat antworten Zitat