Bu makalede, SQL sorguları yazmada kullanılacak çeşitli SQL Convert Date biçimlerini inceleyeceğiz.
SQL’de tarih türü verileriyle çalışmamız gerekiyor. SQL Server geliştiricileri için zaman zaman uğraşmak karmaşık bir şey olabilir. Sütun zaman damgalı bir Ürün tablonuz olduğunu varsayalım. Her müşteri siparişi için bir zaman damgası oluşturur. Bununla ilgili aşağıdaki sorunlarla karşılaşabilirsiniz
Uygulama farklı bir tarih biçiminde veri eklemeye çalıştığından Ürün tablosuna veri ekleyemezsiniz
Diyelim ki YYYY-MM-DD hh:mm: ss biçimindeki bir tabloda verileriniz var. Günlük Satış raporunuz var ve bu nedenle tarihe göre veri grubu istiyorsunuz. Raporda YYYY-MM-DD biçiminde verilerin olmasını istiyorsunuz
İhtiyacımıza göre tarih formatımız olmadığında bu tür senaryolarla karşılaşıyoruz. Her gereksinimi karşılamak için tablo özelliklerini değiştiremeyiz. Bu durumda, gerekli tarih biçimini vermek için SQL Server’daki yerleşik işlevleri kullanmamız gerekir.
Tarih ve Zaman Türleri
SQL Server’da aşağıdaki SQL tarih ve zaman veri tiplerine sahibiz.
Date type | Format |
Time | hh:mm:ss[.nnnnnnn] |
Date | YYYY-MM-DD |
SmallDateTime | YYYY-MM-DD hh:mm:ss |
DateTime | YYYY-MM-DD hh:mm:ss[.nnn] |
DateTime2 | YYYY-MM-DD hh:mm:ss[.nnnnnnn] |
DateTimeOffset | YYYY-MM-DD hh:mm:ss[.nnnnnnn] [+|-]hh:mm |
SQL Server’da, sunucu tarihini ve biçimini çeşitli biçimlerde almak için SQL GETDATE() ve GetUTCDate() gibi yerleşik işlevleri kullanarız.
SYSDATETIME(): Sunucunun tarih ve saatini döndürmek için
SYSDATETIMEOffset(): UTC ofseti ile birlikte sunucunun tarih ve saatini döndürür
GETUTCDATE(): Tarih ve GMT (Greenwich Ortalama Saati) saatini döndürür
GETDATE(): Sunucu tarih ve saatini döndürür
İlgili biçimlerde çıktı almak için aşağıdaki sorguları yürütün.
1 2 3 4 5 6 | Select SYSDATETIME() as [SYSDATETIME] Select SYSDATETIMEOffset() as [SYSDATETIMEOffset] Select GETUTCDATE() as [GETUTCDATE] Select GETDATE() as [GETDATE] |
SQL Convert Date Formatı
Daha önce vurgulandığı gibi, bir tarihi gereksinimlerimize göre farklı biçimlerde biçimlendirmemiz gerekebilir. DateTime’ı çeşitli biçimlerde biçimlendirmek için SQL Server’daki SQL CONVERT() işlevini kullanabiliriz.
SQL CONVERT () işlevi için sözdizimi aşağıdaki gibidir.
1 2 3 | SELECT CONVERT (data_type(length)),Date, DateFormatCode) |
Data_Type: Veri türünü length(uzunluk) ile birlikte tanımlamamız gerekir. Tarih fonksiyonunda varchar (uzunluk) veri türlerini kullanıyoruz
Date: Dönüştürmek istediğimiz tarihi belirtmemiz gerekiyor
DateFormatCode: Tarihi uygun biçimde dönüştürmek için DateFormatCode’u belirtmemiz gerekir. Gelecek adımda bununla ilgili daha fazla şey bulacağız. SQL dönüştürme tarih işlevlerini kullanarak çeşitli tarih biçimlerini inceleyelim.
İlk olarak, aşağıdaki sorgu ile SQL GETDATE() işlevini kullanarak geçerli DateTime tutmak için bir değişken bildirir.
1 2 3 4 5 | declare @mevcuttarih datetime Set @mevcuttarih=GETDATE() select @mevcuttarih |
Aşağıdaki tabloda çeşitli tarih biçimlerini görebiliriz. Bu tabloyu, Tarih Saati sütunları biçiminde başvuru amacıyla kullanışlı tutabilirsiniz.
SQL Sorgusu | Date ve Time Formatı / ÇIKTI | ||
| MM/DD/YY 06/22/20 | ||
| YY.MM.DD 20.06.22 | ||
| DD/MM/YY 22/06/20 | ||
| DD.MM.YY 22.06.20 | ||
| MMM DD,YY Jun 22, 20 | ||
| hh:mm:ss 01:48:55 | ||
| MMM DD YYYY hh:mm:ss:mmm(AM/PM) Jun 22 2020 1:49:55:623AM | ||
| MMM DD YYYY hh:mm:ss:mmm(AM/PM) Jun 22 2020 1:49:55:623AM |
Yukarıdaki örneklerde seçmece olarak bir kaç tanesini verdim. Aşağıdaki kodlardan yazabileceğiniz tüm formatlar sunuyorum.
1 2 3 | SELECT(varchar, TARIH, SEÇENEK) AS TAKMAAD |
şeklinde yazabilirseniz.
Date format seçeneği | SQL convert date çıktı |
0 | Dec 30 2006 12:38AM |
1 | 12/30/06 |
2 | 06.12.30 |
3 | 30/12/2006 |
4 | 30.12.06 |
5 | 30/12/2006 |
6 | 30-Dec-06 |
7 | Dec 30, 06 |
8 | 00:38:54 |
9 | Dec 30 2006 12:38:54:840AM |
10 | 12-30-06 |
11 | 06/12/1930 |
12 | 61230 |
13 | 30 Dec 2006 00:38:54:840 |
14 | 00:38:54:840 |
20 | 30/12/2006 00:38 |
21 | 38:54.8 |
22 | 12/30/06 12:38:54 AM |
23 | 30/12/2006 |
24 | 00:38:54 |
25 | 38:54.8 |
26 | 2006-30-12 00:38:54.840 |
27 | 12-30-2006 00:38:54.840 |
28 | 12-2006-30 00:38:54.840 |
29 | 38:54.8 |
30 | 30-2006-12 00:38:54.840 |
31 | 2006-30-12 |
32 | 12-30-2006 |
33 | 12-2006-30 |
34 | 30/12/2006 |
35 | 30-2006-12 |
100 | Dec 30 2006 12:38AM |
101 | 12/30/2006 |
102 | 2006.12.30 |
103 | 30/12/2006 |
104 | 30.12.2006 |
105 | 30/12/2006 |
106 | 30-Dec-06 |
107 | Dec 30, 2006 |
108 | 00:38:54 |
109 | Dec 30 2006 12:38:54:840AM |
110 | 12-30-2006 |
111 | 30/12/2006 |
112 | 20061230 |
113 | 30 Dec 2006 00:38:54:840 |
114 | 00:38:54:840 |
120 | 30/12/2006 00:38 |
121 | 38:54.8 |
126 | 2006-12-30T00:38:54.840 |
127 | 2006-12-30T00:38:54.840 |
130 | 10 ?? ????? 1427 12:38:54:840A |
131 | 10/12/1427 12:38:54:840AM |
DATEADD Fonksiyonu
Tarihimize belirli bir süre eklemek için SQL DATEADD işlevini kullanabiliriz. Mevcut tarihe 1 ay eklememiz gerektiğini varsayalım. Bu görevi yerine getirmek için SQL DATEADD işlevini kullanabiliriz.
SQL DATEADD işlevinin sözdizimi aşağıdaki gibidir
1 2 3 | DATEADD(interval, number, date) |
interval: Belirtilen tarihte eklenmesi gereken bir aralık belirleyebiliriz. Yıl, ay, gün, hafta, saat, dakika vb. değerler alabiliriz.
number: Eklenecek aralığın sayısını belirtir. Örneğin, aralığı Ay ve Sayı olarak 2 olarak belirlediysek, tarihe 2 ayın eklenmesi gerektiği anlamına gelir.
Aşağıdaki sorguda, geçerli tarihe 2 ay eklemek istiyoruz.
1 2 3 4 5 | SELECT GETDATE() as MevcutTarih SELECT DATEADD(month, 2, GETDATE()) AS YeniTarih; |
Yukarıdaki sorgular çalıştırıldığında aşağıdaki gibi çıktılar oluşacaktır.
MevcutTarih
2020-06-22 01:59:04.643
YeniTarih
2020-08-22 01:59:04.643
Benzer şekilde, aşağıdaki sorguyu kullanarak geçerli tarihe 1 yıl ekleyelim.
1 2 3 4 5 | select GETDATE() as MevcutTarih SELECT DATEADD(Year, 1, GETDATE()) AS YeniTarih; |
İstediğiniz DateTime formatlarında çıktı almak için SQL DATEADD ve CONVERT işlevlerini birleştirebiliriz. Bir önceki örnekte varsayalım; MMM GG, YYYY biçiminde bir tarih biçimi istiyoruz. Bu formatta çıktı almak için 107 format kodunu kullanabiliriz.
İşte bir tane örnek;
1 2 3 4 5 | SELECT DATEADD(YEAR,1,GETDATE()) AS yenitarih ,CONVERT(varchar(110),DATEADD(YEAR,1,GETDATE()),107) AS degisentarih |
Yukarıdaki sorgunun çıktısı aşağıdaki gibi olacaktır.
yenitarih | degisentarih |
2021-06-22 02:03:08.867 | Jun 22, 2021 |
Sonuç
Bu makalede, çeşitli SQL dönüştürme tarih biçimlerini inceledik. Bu makaleyi, tüm tarih biçimlerine referans almak ve sorgularınızda kullanmak için kullanabilirsiniz.
Yorum Yap