Abfrage "Datum der einen Tab größer Datum der anderen Tab"

Datenbanklösungen mit AOO/LO

Moderator: Moderatoren

NTClient
****
Beiträge: 106
Registriert: Di, 19.07.2005 16:09

Abfrage "Datum der einen Tab größer Datum der anderen Tab"

Beitrag von NTClient »

Hallo Jungs (und Mädels)!

Ich steh aufm Schlauch:

Ich will aus der Tabelle "Mitglieder" die Mitglieder abfragen, die im aktuellen Jahr eingetreten sind. Sowas wie

Code: Alles auswählen

select ... where "eintrittsdatum" > erster_Tag_des_Jahres
Ich habe auch schon überlegt, den "ersten Tag des Jahres" manuell in eine einspaltige, einzeilige Tabelle "Wie heißt der erste Tag des Jahres" zu schreiben. Dann bräuchte ich eine Abfrage wie

Code: Alles auswählen

select ... from "mitglieder", "Wie heißt der erste Tag des Jahres" wehre "Eintrittsdatum" > "ersten Tag des Jahres" 


Versteht einer, was ich brauche?
F3K Total
********
Beiträge: 3706
Registriert: Mo, 28.02.2011 17:49

Re: Abfrage "Datum der einen Tab größer Datum der anderen Ta

Beitrag von F3K Total »

So etwa?

Code: Alles auswählen

 where "eintrittsdatum" >= Year(Current_date)||'-01-01'
Gruß R
NTClient
****
Beiträge: 106
Registriert: Di, 19.07.2005 16:09

Re: Abfrage "Datum der einen Tab größer Datum der anderen Ta

Beitrag von NTClient »

Wow! Genau!!
Danke!

Aber woher weiß man das? Wie soll da einer drauf kommen?

Year(Current_date)||'-01-01'

Kannst Du mir den Befehl etwas aufschlüsseln?

Current_date? Ist das das selbe wie Curdate()?
||? Mußte ich erst suchen auf der Tastatur? Warum |? Und warum zweimal ||?
'-01-01' ? Ist das nicht ein Text?

OK: Jahr(aktelles Datum) + '-01-01' gibt 2013-01-01

Ich glaub, ich brauch mal ne Liste mit den Funktionen für Sonderzeichen.

Aber vielen Dank, hat funktioniert. Jetzt müßte nur noch einer mein Thema von "Datum der einen Tab größer Datum der anderen Tab" in "Suche Einträge aus aktuellem Jahr" oder so ähnlich ändern!
Gruß Bernd!
F3K Total
********
Beiträge: 3706
Registriert: Mo, 28.02.2011 17:49

Re: Abfrage "Datum der einen Tab größer Datum der anderen Ta

Beitrag von F3K Total »

NTClient hat geschrieben:Jetzt müßte nur noch einer mein Thema von "Datum der einen Tab größer Datum der anderen Tab" in "Suche Einträge aus aktuellem Jahr" oder so ähnlich ändern!
einer bist Du selber, gehe in den ersten Eintrag, klicke auf ändern, und ändere die Kopfzeile ...
Gruß R
juetho
******
Beiträge: 617
Registriert: Di, 20.04.2010 15:46
Wohnort: Berlin

Re: Abfrage "Datum der einen Tab größer Datum der anderen Ta

Beitrag von juetho »

F3K Total hat geschrieben:So etwa?

Code: Alles auswählen

 where "eintrittsdatum" >= Year(Current_date)||'-01-01'
Ich will nicht als Besserwisser auftreten. Ich halte es aber für einen Umweg, aus einem Datum eine Zahl herauszuholen, diese mit einem String zu einem neuen String zu verknüpfen und dann implizit als Datum zum Vergleich heranziehen (oder das Datum implizit als String zu vergleichen). Meiner Ansicht nach ist ein Vergleich gleicher Typen vorzuziehen, also so etwa:

Code: Alles auswählen

 where Year("eintrittsdatum") = Year(Current_date)
NTClient hat geschrieben:Kannst Du mir den Befehl etwas aufschlüsseln?

Current_date? Ist das das selbe wie Curdate()?
||? Mußte ich erst suchen auf der Tastatur? Warum |? Und warum zweimal ||?
'-01-01' ? Ist das nicht ein Text?
|| ist die Standardverknüpfung von Zeichenketten bei SQL, siehe Einführung in SQL. Jedes SQL-System hat seine eigenen eingebauten Funktionen. F3K hat YEAR verwendet. Current_date ist SQL-Standard. Diejenigen von HSQL (also der internen Datenbank von Base) stehen im Anhang des Base-Handbuchs Seite 321 ff.

Gruß Jürgen
Situation: LibO 3.6 auf Win 7 Home Premium (64-bit) mit MySQL (localhost) über JDBC
F3K Total
********
Beiträge: 3706
Registriert: Mo, 28.02.2011 17:49

Re: Abfrage "Datum der einen Tab größer Datum der anderen Ta

Beitrag von F3K Total »

Hallo Jürgen,
da hast Du natürlich recht!
juetho hat geschrieben:Ich will nicht als Besserwisser auftreten. Ich halte es aber für einen Umweg ...
Im Gegenteil, ich freue mich über solche Verbesserungen, habe wieder etwas Grundlegendes gelernt.
Danke!
Gruß Rik
NTClient
****
Beiträge: 106
Registriert: Di, 19.07.2005 16:09

Re: Abfrage "Datum der einen Tab größer Datum der anderen Ta

Beitrag von NTClient »

Noch mal vielen Dank! Ich habe jetzt:

Code: Alles auswählen

SELECT "ID_Mitglieder"."Mitglieds_Nr", "ID_Mitglieder"."Austritt", YEAR( "Austritt" ) FROM "ID_Mitglieder" WHERE ( YEAR( "Austritt" ) >= YEAR( CURDATE( ) ) 
Ich habe die Abfrage in der Bearbeitungsansicht (rechte Maustaste auf die Abfrage und dann BEABEITEN) erstellt, indem ich

Code: Alles auswählen

YEAR( "Austritt" ) 
als Abfragespalte hinzugefügt habe und dann

Code: Alles auswählen

>= YEAR( CURDATE( ) ) 
in die Zeile für Kriterium geschrieben habe.

Funktioniert auch. Komisch nur:

In der SQL-Ansicht des Befehls kann man den Code so auch lesen. Aber wenn ich erneut in die Bearbeitungsansicht wechsele, also in die "grafische" Abfragebearbeitung sehe ich das Kriterium nicht mehr. Der Eintrag ist leer. Ähnlich, wie das bei der Sortierfunktion ist:

viewtopic.php?f=8&t=60868

Das ist wirklich blöd!

Gruß Bernd!
Antworten