SQL Server’da Doğum Günü Yaklaşan Personelleri Haftalık Olarak Göstermek

Herkese merhaba,

Bu yazıda SQL Server’da doğum günü yaklaşan personelleri haftalık olarak göstermek hakkında bilgi vereceğim.

Eğer büyük ve kurumsal bir firmada çalışıyorsanız ve personellerine önem veren bir firma ise bu SQL sorgusu sizin için güzel bir sorgu olabilir.

Bu sorgu çalışma günlerinde doğum günü olan kişileri kapsayan bir SQL sorgusudur. Böyle bir sorguyu daha önce internette görmedim. Alanında tektir.

Ben işlem için bir tablo oluşturdum. Bu tablo üzerinden işlemlerimi yapacağım. Siz dilerseniz bu tablo üzerinden dilerseniz de kendi tablonuz üzerinden işlemleri yapabilirsiniz.

İlk önce tablomuzu oluşturalım.

CREATE TABLE [dbo].[Personeller](
	[ID] [int] IDENTITY(1,1) NOT NULL,
	[Ad] [nvarchar](50) NULL,
	[Soyad] [nvarchar](50) NULL,
	[DogumTarihi] [date] NULL)

Şimdi içerisine veri ekleyelim.

INSERT INTO Personeller (Ad, Soyad, DogumTarihi)
VALUES
( N'Fredrick', N'Ramirez', N'1968-02-27T00:00:00' ), 
( N'Mario', N'Callahan', N'1978-06-30T00:00:00' ), 
( N'Clyde', N'Tate', N'1971-10-02T00:00:00' ), 
( N'Sheryl', N'Beck', N'1981-11-20T00:00:00' ), 
( N'Meredith', N'Carson', N'1964-08-01T00:00:00' ), 
( N'Cecilia', N'Bartlett', N'1985-04-11T00:00:00' ), 
( N'Elena', N'Brown', N'1970-03-26T00:00:00' ), 
( N'Derek', N'Mcgrath', N'1962-05-03T00:00:00' ), 
( N'Shanda', N'Bird', N'1979-07-26T00:00:00' ), 
(  N'Cassandra', N'Wright', N'1984-05-02T00:00:00' ), 
(  N'Katina', N'Davis', N'1953-04-15T00:00:00' ), 
(  N'Lawrence', N'Rogers', N'1971-12-04T00:00:00' ), 
(  N'Angelia', N'Miller', N'1961-10-31T00:00:00' ), 
(  N'Jack', N'Wolfe', N'1964-12-25T00:00:00' ), 
(  N'Penny', N'Pace', N'1965-08-07T00:00:00' ), 
(  N'Kim', N'Glover', N'1960-08-16T00:00:00' ), 
(  N'Marcie', N'Johns', N'1967-08-13T00:00:00' ), 
(  N'Shirley', N'Harding', N'1977-05-03T00:00:00' ), 
(  N'Penny', N'Woods', N'1979-07-29T00:00:00' ), 
(  N'Daniel', N'Roberts', N'1978-03-05T00:00:00' ), 
(  N'Lydia', N'May', N'1985-06-25T00:00:00' ), 
(  N'Marcus', N'Gould', N'1953-09-05T00:00:00' ), 
(  N'Ivan', N'Greer', N'1968-10-07T00:00:00' ), 
(  N'Charles', N'Dominguez', N'1973-08-15T00:00:00' ), 
(  N'Ramona', N'Edwards', N'1979-11-05T00:00:00' ), 
(  N'Susana', N'Bradley', N'1975-03-27T00:00:00' ), 
(  N'Daryl', N'Pitts', N'1970-12-18T00:00:00' ), 
(  N'Autumn', N'Pham', N'1968-07-21T00:00:00' ), 
(  N'Cassandra', N'Hendrix', N'1978-02-24T00:00:00' ), 
(  N'Floyd', N'Strickland', N'1956-02-04T00:00:00' ), 
(  N'Calvin', N'Mac Donald', N'1962-04-09T00:00:00' ), 
(  N'Eduardo', N'Greer', N'1954-07-08T00:00:00' ), 
(  N'Dean', N'Castaneda', N'1977-04-09T00:00:00' ), 
(  N'Sherrie', NULL, N'1983-07-21T00:00:00' ), 
(  N'Lisa', N'Norton', N'1984-08-12T00:00:00' ), 
(  N'Jackie', N'Li', N'1956-11-10T00:00:00' ), 
(  N'Cara', N'Potter', N'1965-02-21T00:00:00' ), 
(  N'Harvey', N'Curtis', N'1974-02-11T00:00:00' ), 
(  N'Melisa', N'Herring', N'1976-11-07T00:00:00' ), 
(  N'Benjamin', N'Levine', N'1980-08-06T00:00:00' ), 
(  N'Evan', N'Mosley', N'1980-05-12T00:00:00' ), 
(  N'Susan', N'Frank', N'1975-09-28T00:00:00' ), 
(  N'Gina', N'Patterson', N'1969-07-30T00:00:00' ), 
(  N'Beth', N'Dougherty', N'1968-05-29T00:00:00' ), 
(  N'Ericka', N'Barnes', N'1970-10-18T00:00:00' ), 
(  N'Latoya', N'Sellers', N'1959-05-16T00:00:00' ), 
(  N'Staci', N'Morgan', N'1984-12-02T00:00:00' ), 
(  N'Ross', N'Stark', N'1954-06-07T00:00:00' ), 
(  N'Alisha', N'Barker', N'1974-05-15T00:00:00' ), 
(  N'Kelli', N'Kim', N'1985-08-03T00:00:00' ), 
(  N'Allan', N'Shelton', N'1984-12-12T00:00:00' ), 
(  N'Sonja', N'Lutz', N'1979-05-12T00:00:00' ), 
(  N'Alvin', N'Fritz', N'1961-02-08T00:00:00' ), 
(  N'Everett', N'Gomez', N'1965-06-29T00:00:00' ), 
(  N'Rachelle', N'Watkins', N'1983-02-06T00:00:00' ), 
(  N'Clay', N'Estrada', N'1960-12-30T00:00:00' ), 
(  N'Gregg', N'Johnston', N'1960-10-31T00:00:00' ), 
(  N'Tim', N'Reed', N'1975-09-09T00:00:00' ), 
(  N'Glenn', N'Jordan', N'1959-07-12T00:00:00' ), 
(  N'Liza', N'Gilbert', N'1984-08-07T00:00:00' ), 
(  N'Franklin', N'Horton', N'1968-04-27T00:00:00' ), 
(  N'Carla', N'Ortiz', N'1958-03-15T00:00:00' ), 
(  N'Jessie', N'Shaffer', N'1978-07-21T00:00:00' ), 
(  N'Jimmie', N'Smith', N'1973-12-07T00:00:00' ), 
(  N'Jordan', N'Flynn', N'1973-02-15T00:00:00' ), 
(  N'Harry', N'Thornton', N'1966-06-17T00:00:00' ), 
(  N'Dwayne', N'Waters', N'1983-02-08T00:00:00' ), 
(  N'Hannah', N'Norman', N'1955-07-27T00:00:00' ), 
(  N'Ron', N'Cervantes', N'1982-12-22T00:00:00' ), 
(  N'Kristi', N'Dunlap', N'1964-11-05T00:00:00' ), 
(  N'Erich', N'Rojas', N'1969-05-13T00:00:00' ), 
(  N'Gene', N'Pierce', N'1979-01-06T00:00:00' ), 
(  N'Rogelio', N'David', N'1956-05-03T00:00:00' ), 
(  N'Heather', N'Schmitt', N'1980-01-22T00:00:00' ), 
(  N'Olga', N'Gallagher', N'1977-02-24T00:00:00' ), 
(  N'Kristina', NULL, N'1983-04-18T00:00:00' ), 
(  N'Angelique', N'Sweeney', N'1983-04-11T00:00:00' ), 
(  N'Alex', N'Fox', N'1965-06-28T00:00:00' ), 
(  N'Chester', N'Davis', N'1985-02-25T00:00:00' ), 
(  N'Morgan', N'Frank', N'1961-04-07T00:00:00' ), 
(  N'Janine', N'Anthony', N'1982-04-22T00:00:00' ), 
(  N'Catherine', N'Bright', N'1967-07-16T00:00:00' ), 
(  N'Kellie', N'Schroeder', N'1956-07-12T00:00:00' ), 
(  N'Enrique', N'Shelton', N'1954-02-01T00:00:00' ), 
(  N'Regina', N'Gross', N'1961-04-11T00:00:00' ), 
(  N'Rachael', N'Grimes', N'1974-02-03T00:00:00' ), 
(  N'Trent', N'Norman', N'1966-06-19T00:00:00' ), 
(  N'Dianna', N'Stein', N'1978-12-31T00:00:00' ), 
(  N'Joy', N'Bauer', N'1975-09-23T00:00:00' ), 
(  N'Jeanne', N'Barber', N'1963-10-12T00:00:00' ), 
(  N'Jamal', N'Pierce', N'1960-01-19T00:00:00' ), 
(  N'Lara', N'Byrd', N'1974-01-06T00:00:00' ), 
(  N'Monica', N'Bush', N'1978-08-28T00:00:00' ), 
(  N'Shane', N'Herrera', N'1953-07-06T00:00:00' ), 
(  N'Quentin', N'York', N'1984-10-04T00:00:00' ), 
(  N'Devon', N'Abbott', N'1985-02-18T00:00:00' ), 
(  N'Jesse', N'Chase', N'1975-08-22T00:00:00' ), 
(  N'April', N'Mercer', N'1984-03-08T00:00:00' ), 
(  N'Derick', N'Simmons', N'1963-04-25T00:00:00' ), 
(  N'Rachel', N'Graves', N'1953-09-06T00:00:00' )

Şimdi belirtilen tarihteki haftayı baz almış doğum günü olan kişileri listeleyelim.

DECLARE @CalismaGunu DATE;
SET @CalismaGunu = '2020-06-15'; --Buraya istersen tarih verebilirsin. İstersen de getdate() yazabilirsin.
SET LANGUAGE Turkish;

SELECT *,
       DATENAME(WEEKDAY, p.[Yaklaşan Doğum Günü Tarihleri]) AS Gün,
       IIF(p.[Yaklaşan Doğum Günü Tarihleri] = @CalismaGunu,
           'Bugün Doğum Günü',
           'Bu Hafta ' + DATENAME(WEEKDAY, p.[Yaklaşan Doğum Günü Tarihleri])) AS Bilgi
FROM
(
    SELECT *,
           [Yaklaşan Doğum Günü Tarihleri] = DATEADD(
                                                        YEAR,
                                                        DATEPART(YEAR, @CalismaGunu) - DATEPART(YEAR, DogumTarihi),
                                                        DogumTarihi
                                                    )
    FROM Personeller s --Tablo adını burdan değiştirebilirsin
) p
WHERE (
          p.[Yaklaşan Doğum Günü Tarihleri] >= DATEADD(
                                                          wk,
                                                          0,
                                                          DATEADD(
                                                                     DAY,
                                                                     1 - DATEPART(WEEKDAY, @CalismaGunu),
                                                                     DATEDIFF(dd, 0, @CalismaGunu)
                                                                 )
                                                      )
          AND p.[Yaklaşan Doğum Günü Tarihleri] <= DATEADD( wk, 1, DATEADD( DAY, 0 - DATEPART(WEEKDAY, @CalismaGunu), DATEDIFF(dd, 0, @CalismaGunu) ) ) - 2 ) AND DATENAME(WEEKDAY, p.DogumTarihi) NOT IN ( 'Saturday', 'Sunday' ) AND p.[Yaklaşan Doğum Günü Tarihleri] >= @CalismaGunu
ORDER BY p.[Yaklaşan Doğum Günü Tarihleri] ASC;


Kodu çalıştırınca aşağıdaki sonucu göreceksiniz.

SQL Server’da Doğum Günü Yaklaşan Personelleri Haftalık Olarak Göstermek

Görüldüğü üzere belirtilen güne ait haftada iki kişinin doğum günü varmış.

Herkese çalışma hayatında ve yaşamında başarılar kolaylıklar

573 Kez Okundu

Yavuz Selim Kart

Yazılım ve veri tabanında bildiklerimi anlatmaya gayret ediyorum. Halen birçok programlama dili üzerinde araştırmalar yaparak kendimi geliştiriyorum. Bunlar haricinde Grafik Tasarım ve Wordpress konularına da ilgim bulunmakta. SEO ve Sosyal medya yönetimleri hakkında da bilgim mevcuttur. Kısaca çok çalışmayı seven azimli biriyim.

You may also like...

Yazı kopyalamak yasaktır!