Seite 1 von 1

GELÖST: Datensätze älter als 1 Jahr finden

Verfasst: So 18. Aug 2024, 14:02
von OfficeUser
Hallo Community,

nachdem ich lange abwesend war, beschäftige ich mich mal wieder mit Base. Dabei scheint ein ganz simples Problem aufzutreten, für welches ich einfach keine Lösung finde.

Ich habe in einer Tabelle das Datum gespeichert an welchem der Datensatz angelegt wurde. Jetzt möchte ich aus dieser Tabelle, alle Datensätze über eine Abfrage finden, wo das Datum schon mehr als 1 Jahr her ist.

Beispiel:

Code: Alles auswählen

SELECT "Datum", "WeitereDaten"
FROM "MeineTabelle"
WHERE "Datum" <= ??? (Datum_vor_einem_Jahr)
Trotz intensiver Suche, auch im Handbuch, habe ich dazu nichts gefunden. Über ein Formular und mit Filter-Tabelle habe ich etwas ähnliches, mit Datum zwischen (BETWEEN) schon realisiert. Hier soll die Abfrage jedoch ohne vorherige Eingabe des Datums als Parameter oder in einem Formular realisiert werden.

Ich bin für jeden Tipp dankbar.

Lieben Gruß
Klaus

Re: Datensätze älter als 1 Jahr finden

Verfasst: So 18. Aug 2024, 16:12
von RobertG
Hast Du denn erst einmal das Ganze mit der direkten Eingabe des Datums versucht ('2023-08-18')?

Und wenn Du das dann hast kannst Du ja mit CURRENT_DATE und eine Umwandlung des Jahresanteils des Datums das Datum von vor einem Jahr laufend ermitteln.

Re: Datensätze älter als 1 Jahr finden

Verfasst: So 18. Aug 2024, 16:56
von OfficeUser
Also mit der Eingabe eines Datums funktioniert es einwandfrei, jedoch soll es hier keine Parameter-Abfrage werden.

Genau bei der Berechnung mit "CURRENT_DATE" habe ich die Probleme. Berechnung wie in Calc (CURRENT_DATE - 366) funktioniert nicht, auch "DATE_SUB()" erzeugt in Base Fehlermeldungen.

Re: Datensätze älter als 1 Jahr finden

Verfasst: So 18. Aug 2024, 19:17
von RobertG
Welche Befehle da greifen hängt mit der eingesetzten Datenbank zusammen. Die interne HSQLDB ist so alt, dass sie Funktionen wie DATEADD nicht kennt.

CURRENT_DATE → aktuelles Datum
EXTRACT(YEAR FROM CURRENT_DATE) → Jahr des aktuellen Datums
EXTRACT(YEAR FROM CURRENT_DATE) - 1 → letztes Jahr

Code: Alles auswählen

(EXTRACT(YEAR FROM CURRENT_DATE) - 1)||'-'||RIGHT('0'||EXTRACT(MONTH FROM CURRENT_DATE),2)||'-'||RIGHT('0'||EXTRACT(DAY FROM CURRENT_DATE),2)
müsste jetzt das Datum von vor einem Jahr ergeben.

Re: Datensätze älter als 1 Jahr finden

Verfasst: So 18. Aug 2024, 19:58
von OfficeUser
Hallo Robert,

Danke für die Antwort, welche in der Tat die Lösung darstellt. Ich hätte nicht gedacht, dass Datums-Berechnungen in der internen HSQLDB so aufwendig sind. :lol:

Re: GELÖST: Datensätze älter als 1 Jahr finden

Verfasst: Mo 19. Aug 2024, 08:43
von RobertG
In Firebird wäre das mit
CURRENT_DATE - 365
auf die schnelle Tour ohne Berücksichtigung von Schaltjahren gegangen. Sonst über
DATEADD(year, -1, CURRENT_DATE)