Geburtstageliste im MSSQL

Wolle39

Benutzer
Beiträge
6
Hallo zusammen.

Ich versuche eine Abfrage im MSSQL2014 zum machen, und zwar eine Geburtstagliste - es sollen allerdings nur die Namen auftauchen die die letzten 7 Tage und heute Geburtstag hatten/haben und keine Geburtsjahr soll zu sehen sein.

SELECT Vorname, Nachname, Format(Geburtsdatum,'dd.MM.') AS Geburtsdatum
FROM dbo.Ressource

Könnt ihr mir da weiterhelfen?

Danke.

Gruß Wolle
 
Werbung:
Am liebsten eine fertige Lösung :).
Eine Hilfestellung natürlich. Versteh mich bitte richtig. Ich bin nicht jeden Tag auf dem MSSQL Server unterwegs und mach das quasi nebenbei.
Die meisten hier sind viel vertrauter mit DB Themen als manch anderer. Ich glaube sogar, das manch einer gar nicht weiß, das es unterschiedliche SQL´s gibt.
 
Soweit komme ich, allerdings scheitere ich noch an der BETWEEN Sache.
Was mache ich falsch?

SELECT Nachname, DATEPART(DAY, Geburtsdatum) AS Geburtstag, DATEPART(month, Geburtsdatum) AS Geburtsmonat, DATEPART(DAY, CURRENT_TIMESTAMP) AS Tag_aktuell, DATEPART(month, CURRENT_TIMESTAMP)
AS Monat_aktuell, Einstelldatum
FROM Ressource
WHERE (DATEPART(month, Geburtsdatum) = DATEPART(month, CURRENT_TIMESTAMP)) AND ((DATEPART(DAY, CURRENT_TIMESTAMP) >= (DATEPART(DAY, Geburtsdatum)) betwenn 0 and 7)
 
Hallo Wolle,

da hilft es im Regelfall, wenn man mal ein wenig in der T-SQL-Referenz auf den Microsoft-Seiten stöbert.
Hier mal ein Link dazu (findet man natürlich auch mit Google oder Bing):

Transact-SQL-Referenz (Datenbank-Engine) - SQL Server | Microsoft Docs
BETWEEN (Transact-SQL) - SQL Server | Microsoft Docs

Aber ich habe da natürlich auch ein Beispiel für dich:

Code:
-- Vorbereitung, um überhaupt auswertbare Daten zu bekommen
DECLARE @TA TABLE
(
    Mitarbeiter varchar(25),
    Geburtsdatum date
)

DECLARE @I int = 0, @Mitarbeiter varchar(25), @Datum date

WHILE @I <= 25
BEGIN
    
    SET @Mitarbeiter = 'Mitarbeiter' + CHAR(65+@I)
    SET @Datum = DATEADD(day, -ROUND(RAND() * 36,0) , GETDATE())
    SET @Datum = DATEADD(YEAR, (-1) * (ROUND(RAND() * 45,0) + 18), @Datum)

    print @Mitarbeiter + ': ' + CONVERT(varchar(25), @Datum, 104)
    INSERT INTO @TA(Mitarbeiter, Geburtsdatum) VALUES (@Mitarbeiter, @Datum)

    SET @I += 1

END


-- Abfrage aller generierten Daten
-- SELECT * FROM @TA


-- Abfrage nach Geburtstagen der letzten 7 Tage
SELECT

Mitarbeiter,
Geburtsdatum = LEFT(CONVERT(varchar(25), Geburtsdatum, 104),6)

FROM @TA

WHERE DATEPART(dayofyear, Geburtsdatum) - DATEPART(dayofyear, GETDATE()) BETWEEN -6 AND 0


Ich hoffe, das hilft dir weiter.

Viele Grüße,
Tommi
 
Werbung:
Super Tommi,

hat auf Anhieb geklappt, und ich hab jetzt grad einiges dazu gelernt.

Vielen Dank an Alle - für die Hilfestellung.

Gruß Wolle
 
Zurück
Oben