T- SQL’de Date Fonksiyonlar
Veri tabanlarında tarih ve saat tipinde birçok alan bulunur. Date fonksiyonlarını veritabanlarında kullanılan tarih ve saat fonksiyonları olarak niteleyebiliriz. SQL ve T-SQL ile ilgilenen kullanıcılar için önemlilerdir.
• CURRENT_TIMESTAMP • CURRENT_TIMEZONE • CURRENT_TIMEZONE_ID • DATEADD • DATEDIFF • DATEDIFF_BIG • DATEFROMPARTS • DATENAME • DATEPART • DATETIME2FROMPARTS • DATETIMEFROMPARTS • DATETIMEOFFSETFROMPARTS • DAY • EOMONTH • GETDATE • GETUTCDATE • ISDATE • MONTH • SMALLDATETIME FROMPARTS • SWITCHOFFSET • SYSDATETIME • SYSDATETIMEOFFSET • SYSUTCDATETIME • TIMEFROMPARTS • TODATETIMEOFFSET • YEAR
Anlık olarak Tarih-Saat bilgisini getiren fonksiyonlar
-> GETDATE(): En çok kullanılan fonksiyondur. DATETIME tipinde fonksiyon döndürür.
SYSDATETIME(): Hassas ölçülmüş tarih-zaman bilgisi verir (yıl,ay,gün,saat,dakika,saniye+milisaniye bilgisini verir.)
SYSDATETIMEOFFSET(): Hassas ölçülüş tarih-zaman bilgisine ek olarak timezone bilgisini de verir.
SYSUTCDATETIME(): Timezone değerini Greenwich’e göre getirir.
CURRENT_TIMSTAMP(): GATEDATE ile aynı işlevi gerçekleştirir.
GETUTCDATETIME(): Tarih-zaman bilgisini daha az hassasiyet ile getirir.

DATEPART Fonksiyonu
Bir tarih-saat verisinin içerisinde belli bölümleri parçalayıp almak için kullanılan fonksiyondur.
SELECT
DATEPART(YEAR,GETDATE()) YIL,
DATEPART(MONTH,GETDATE()) AY,
DATEPART(DAY,GETDATE()) GÜN,
DATEPART(HOUR,GETDATE()) SAAT,
DATEPART(MINUTE,GETDATE()) DAKİKA,
DATEPART(SECOND,GETDATE()) SANİYE

-> SET DATEFIRST 1 // Programı İngiliz standartlarına kurduğumuz için hesaplamaların Türkiye standartlarına göre sonuçlanmasını belirttik.
SELECT
DATEPART(YEAR,’2024-04-05 19:20:48:323′) YIL,
DATEPART(MONTH,’2024-04-05 19:20:48:323′) AY,
DATEPART(DAY,’2024-04-05 19:20:48:323′) GÜN,
DATEPART(HOUR,’2024-04-05 19:20:48:323′) SAAT,
DATEPART(MINUTE,’2024-04-05 19:20:48:323′) DAKİKA,
DATEPART(SECOND,’2024-04-05 19:20:48:323′) SANİYE,
DATEPART(MILLISECOND,’2024-04-05 19:20:48:323′) MİLİSANİYE,
DATEPART(DAYOFYEAR,’2024-04-05 19:20:48:323′) KACINCI_GUN,
DATEPART(DW,’2024-04-05 19:20:48:323′) HANGI_GUN, // Eğer SET DATEFIRST 1 demeseydik İngiliz standartlarına göre haftanın ilk günü pazar olduğu için bize göre yanlış bir sonuç ile karşılaşacaktık.
DATEPART(WEEK,’2024-04-05 19:20:48:323′) KACINCI_HAFTA

DATENAME Fonksiyonu
DATETIME ile benzerdir. Veriyi string tipinde almamıza yarar.
-> SET DATEFIRST 1 // Haftanın ilk gününü pazartesi olarak ayarladık.
SET LANGUAGE Turkish // Verilerin Türkçe diline çevrilmesini sağladık.
SELECT
DATENAME(YEAR,’2024-04-05 19:20:48:323′) YIL,
DATENAME(MONTH,’2024-04-05 19:20:48:323′) AY,
DATENAME(DAY,’2024-04-05 19:20:48:323′) GÜN,
DATENAME(HOUR,’2024-04-05 19:20:48:323′) SAAT,
DATENAME(MINUTE,’2024-04-05 19:20:48:323′) DAKİKA,
DATENAME(SECOND,’2024-04-05 19:20:48:323′) SANİYE,
DATENAME(MILLISECOND,’2024-04-05 19:20:48:323′) MİLİSANİYE,
DATENAME(DAYOFYEAR,’2024-04-05 19:20:48:323′) KACINCI_GUN,
DATENAME(DW,’2024-04-05 19:20:48:323′) HANGI_GUN,
DATENAME(WEEK,’2024-04-05 19:20:48:323′) KACINCI_HAFTA

DATE-TIMEFROMPARTS Fonksiyonları
DateFromParts – TimeFromParts – DateTimeFromParts olmak üzere 3 adet fonksiyon vardır. Aldıkları parametrelere göre sonuç döndürürler. Genellikle optik formlarda kullanılırlar.
SELECT DATEFROMPARTS(2022,7,28) // 2022-07-28
SELECT DATETIMEFROMPARTS(1999,5,17,12,23,46,15) // 1999-05-17 12:23:46.017
SELECT TIMEFROMPARTS(16,45,56,223,3) // 16:45:56.223

DAY, MONTH, YEAR Fonksiyonları
DATE ya da DATETIME fonksiyonlarından gün, ay, yıl bilgilerini daha kısa bir yol kullanarak çekmemize yarar.

DATEDIFF Fonksiyonu
İki tarih arasındaki fonksiyonu almak istediğimizde kullanırız. Yaş, çalışma süresi vb. yerlerde kullanabiliriz. Farkı hangi şekilde göstermek istiyorsak (yıl,ay,gün,dakika,… ) o parametreyi fonksiyona veririz.
SELECT
DATEDIFF(YEAR,’1980-06-10′,’2008-12-11′), // 28
DATEDIFF(MONTH,’1980-06-10′,’2008-12-11′), // 342
DATEDIFF(WEEK,’1980-06-10′,’2008-12-11′), // 1487
DATEDIFF(DAY,’1980-06-10′,’2008-12-11′), // 10411
DATEDIFF(MINUTE,’1980-06-10′,’2008-12-11′) // 14991840

DATEADD Fonksiyonu
Bir tarihe bir değer ekler ya da çıkartır. 3 parametre alır -> tarih-ay/yıl/gün/saat/dakika…- eklenecek ya da çıkartılacak birim sayısı
SELECT
DATEADD(YEAR,10,’2012-07-09′), // 2022-09-07 00:00:00.000
DATEADD(MONTH,5,’2012-07-09′), // 2013-02-07 00:00:00.000
DATEADD(DAY,12,’2012-07-09′), // 2012-09-19 00:00:00.000
DATEADD(MINUTE,15,’2002-11-10 15:30:00′), // 2002-10-11 15:45:00.000
DATEADD(YEAR,-20,’2000-15-04′) yıl_çıkart // 1980-04-15 00:00:00.000
SELECT DATEADD(MINUTE,20,DATEADD(HOUR,9,’2002-26-11′)) // 2002-11-26 09:20:00.000

ISDATE Fonksiyonu
İfadenin tarih formatına uygun olup olmadığını döndüren bir fonksiyondur. Dil seçimine göre yıl-ay-gün sıralaması değişebilir. Bozuk verileri kontrol eder.
SELECT ISDATE (‘2023-07-02’) // 1
SELECT ISDATE(‘20221306’) // 0