# Query für Geburtstage



## internet (1. Mai 2014)

Hallo zusammen,

ich möchte gerne eine Query in JPA bauen, die mir die nächsten Geburtstage anzeigt.
Das Geburtsdatum speichere ich natürlich so ab *01.01.1970*

Wie gehe ich hierbei ran? Suche ich nur nach dem Tag und Monat oder wie mache ich das?
Hat das gegebenfalls schon mal jemand implementiert?

Freue mich über Antworten.


----------



## JavaMeister (1. Mai 2014)

Registriert seit: 21.10.2009

Du beschäftigst dich seit 5 Jahren mit Java. 

Du postest hier bereits über 300 Fragen.



> Das Geburtsdatum speichere ich natürlich so ab 01.01.1970



Wie? Als String? Date? oder Fettgedruckt?

Kann man hier nicht eine naive implementierung nehmen mit gebdate= or gebdate= or or or

Später kann man between nutzen oder "SQL DATE ARITHMETIC" suchen. Kann jede SQL DB.


----------



## turtle (1. Mai 2014)

> ich möchte gerne eine Query in JPA bauen, die mir die nächsten Geburtstage anzeigt.



Frag dich doch mal selbst, wie da eine Antwort, bei den echt rudimentären Angaben, aussehen könnte?

Das Einzige, was du noch sagst, ist "01.01.1970" und da würde ich alle Tage ausgeben. Denn jeder Tag ist ein Geburtstag irgendeines Menschen und das kannst du somit bis in alle Ewigkeit machen.

Also musst du definitiv mehr Informationen nennen, weiss aber auch nicht wo ein Problem sein könnte, denn wie JavaMeister schon richtig anmerkte, trivialer Vergleich eines Datums mit DB-Eintrag aus DB sollte doch reichen, oder?


----------



## internet (1. Mai 2014)

Okay, danke - ich hätte vielleicht mehr Infos nennen sollen:

In meiner Entity sieht mein Geburtstag so aus:


```
@Column(name = "birthdate")
	@Temporal(DATE)
	private Date birthdate = null;
```

Mein Problem ist eher, dass ich ja bspw. ein Geb habe 01.01.1970.
Nun möchte ich ja aber nur den Tag und den Monat.
Ebenso bereitet es mir Schwierigkeiten zu prüfen "in den nächsten Tagen".



```
Select * From Kunde k Where k.birthdate ??? heute oder in den nächsten Tage ???
```


----------



## turtle (1. Mai 2014)

Wurde ebenfalls bereits genannt, das Datum-Arithmetik in SQL möglich ist. Hier gibt es dazu ein paar Infos.

Eine Query, die das exemplarisch macht, könnte so aussehen, wobei date1 bzw. date2 wieder Date-Objekte sind.


```
Select * From Kunde k where k.birthdate between :date1 and :date1
```

Analog sähen das Beispiel für "die nächsten Tage" ziemlich ähnlich aus, musst nur die entsprechenden Funktionen der DB nutzen (siehe Link).


----------



## internet (3. Mai 2014)

Super, danke. 
Habe die Funktionen der DB verwendet und geht auch. 

Nun habe ich aber noch ein weiteres Problem, da ich ja verschiedene Objekttypen speichern bzw. aus der DB auslesen möchte.

Ich habe hierzu ein weiteres Thema aufgemacht:
http://www.java-forum.org/datenbank...pa-liste-mehreren-entitaeten.html#post1018348


----------



## turtle (3. Mai 2014)

Hast du mal ein Beispiel zur Hand?

Hört sich für mich erst mal nach einem Join an. Und dabei müssen die Einträge aus den beteiligten Tabellen in einer Beziehung stehen, üblicherweise über deren Schlüssel.

Ah sorry, sehe gerade den anderen Thread. Lese/Antworte dann da


----------

