MS SQL ile bugün doğanların bulunması veya SQL de bu ay doğanların bulunması
MS SQL de aşağıdaki gibi bir bir veri seti içinde bugün doğanları filtrelemek istenirse, tarih alanının gün ve ay olarak ayrılması gerekmektedir.
Tarih alanınında gün ve ay bilgisi alabilmek için Day(TARIH), Ay bilgisini almak için Month(TARIH) fonksiyonlarını kullanabiliriz.
Veri kaynağı için geçici tablo oluşturma
SELECT 1 AS ID,'AHMET1' AS ADI,'DENEME1' AS SOYADI,'1990-08-19' AS DTARIH
INTO #GECICI_TABLO
UNION
SELECT 2 AS ID, 'AHMET2' AS ADI,'DENEME2' AS SOYADI,'1988-01-31' AS DTARIH
UNION
SELECT 3 AS ID, 'AHMET3' AS ADI,'DENEME3' AS SOYADI,'1985-08-31' AS DTARIH
UNION
SELECT 4 AS ID,'AHMET4' AS ADI,'DENEME4' AS SOYADI,'1984-05-11' AS DTARIH
UNION
SELECT 5 AS ID,'AHMET5' AS ADI,'DENEME5' AS SOYADI,'1980-08-20' AS DTARIH
UNION
SELECT 6 AS ID,'AHMET6' AS ADI,'DENEME6' AS SOYADI,'1978-05-28' AS DTARIH
UNION
SELECT 7 AS ID,'AHMET7' AS ADI,'DENEME7' AS SOYADI,'1990-06-25' AS DTARIH
UNION
SELECT 8 AS ID,'AHMET8' AS ADI,'DENEME8' AS SOYADI,'1992-08-22' AS DTARIH
UNION
SELECT 9 AS ID,'AHMET9' AS ADI,'DENEME9' AS SOYADI,'1979-12-22' AS DTARIH
UNION
SELECT 10 AS ID,'AHMET10' AS ADI,'DENEME10' AS SOYADI,'1993-09-06' AS DTARIH
UNION
SELECT 11 AS ID,'AHMET11' AS ADI,'DENEME11' AS SOYADI,'1981-01-18' AS DTARIH
UNION
SELECT 12 AS ID,'AHMET12' AS ADI,'DENEME12' AS SOYADI,'1983-03-29' AS DTARIH
UNION
SELECT 13 AS ID,'AHMET13' AS ADI,'DENEME13' AS SOYADI,'1982-06-05' AS DTARIH
UNION
SELECT 14 AS ID,'AHMET14' AS ADI,'DENEME14' AS SOYADI,'1990-05-28' AS DTARIH
UNION
SELECT 15 AS ID,'AHMET15' AS ADI,'DENEME15' AS SOYADI,'1991-02-15' AS DTARIH
UNION
SELECT 16 AS ID,'AHMET16' AS ADI,'DENEME16' AS SOYADI,'1977-05-03' AS DTARIH
UNION
SELECT 17 AS ID,'AHMET17' AS ADI,'DENEME17' AS SOYADI,'1984-05-11' AS DTARIH
UNION
SELECT 18 AS ID,'AHMET18' AS ADI,'DENEME18' AS SOYADI,'1987-08-19' AS DTARIH
UNION
SELECT 19 AS ID,'AHMET19' AS ADI,'DENEME19' AS SOYADI,'1970-11-11' AS DTARIH
UNION
SELECT 20 AS ID,'AHMET20' AS ADI,'DENEME20' AS SOYADI,'1980-05-11' AS DTARIH
UNION
SELECT 21 AS ID,'AHMET21' AS ADI,'DENEME21' AS SOYADI,'1979-11-29' AS DTARIH
UNION
SELECT 22 AS ID,'AHMET22' AS ADI,'DENEME22' AS SOYADI,'1992-03-15' AS DTARIH
UNION
SELECT 23 AS ID,'AHMET23' AS ADI,'DENEME23' AS SOYADI,'1988-12-16' AS DTARIH
UNION
SELECT 24 AS ID,'AHMET24' AS ADI,'DENEME24' AS SOYADI,'1996-03-08' AS DTARIH
UNION
SELECT 25 AS ID,'AHMET25' AS ADI,'DENEME25' AS SOYADI,'1995-08-31' AS DTARIH
Oluşturduğumuz geçici tablomuzun içeriği aşağıdaki gibidir.
SELECT * FROM #GECICI_TABLO
ID | ADI | SOYADI | DTARIH |
1 | AHMET1 | DENEME1 | 19.08.1990 |
2 | AHMET2 | DENEME2 | 31.01.1988 |
3 | AHMET3 | DENEME3 | 31.08.1985 |
4 | AHMET4 | DENEME4 | 11.05.1984 |
5 | AHMET5 | DENEME5 | 20.08.1980 |
6 | AHMET6 | DENEME6 | 28.05.1978 |
7 | AHMET7 | DENEME7 | 25.06.1990 |
8 | AHMET8 | DENEME8 | 22.08.1992 |
9 | AHMET9 | DENEME9 | 22.12.1979 |
10 | AHMET10 | DENEME10 | 06.09.1993 |
11 | AHMET11 | DENEME11 | 18.01.1981 |
12 | AHMET12 | DENEME12 | 29.03.1983 |
13 | AHMET13 | DENEME13 | 05.06.1982 |
14 | AHMET14 | DENEME14 | 28.05.1990 |
15 | AHMET15 | DENEME15 | 15.02.1991 |
16 | AHMET16 | DENEME16 | 03.05.1977 |
17 | AHMET17 | DENEME17 | 11.05.1984 |
18 | AHMET18 | DENEME18 | 19.08.1987 |
19 | AHMET19 | DENEME19 | 11.11.1970 |
20 | AHMET20 | DENEME20 | 11.05.1980 |
21 | AHMET21 | DENEME21 | 29.11.1979 |
22 | AHMET22 | DENEME22 | 15.03.1992 |
23 | AHMET23 | DENEME23 | 16.12.1988 |
24 | AHMET24 | DENEME24 | 08.03.1996 |
25 | AHMET25 | DENEME25 | 31.08.1995 |
--BUGÜN DOĞANLAR
SELECT ADI,SOYADI,DTARIH,DAY(DTARIH) AS GUN,MONTH(DTARIH) AS AY,YEAR(DTARIH) AS YIL
FROM #GECICI_TABLO
WHERE DAY(DTARIH)=DAY(GETDATE()) AND MONTH(DTARIH)=MONTH(GETDATE())
*Burada kullanılan getdate() fonksiyonu günün tarihini verir. Dolayısıyla bu sorgu gün değiştikçe hergün için dinamik çalışır.
Sonuç :
ADI | SOYADI | DTARIH | GUN | AY | YIL |
AHMET6 | DENEME6 | 28.05.1978 | 28 | 5 | 1978 |
AHMET14 | DENEME14 | 28.05.1990 | 28 | 5 |
1990 |
--BU AY DOĞANLAR
SELECT ADI,SOYADI,DTARIH,DAY(DTARIH) AS GUN,MONTH(DTARIH) AS AY,YEAR(DTARIH) AS YIL
FROM #GECICI_TABLO
WHERE MONTH(DTARIH)=MONTH(GETDATE())