SQL DateTime Convert, Convert ve Datetime Veri Tipleri yazım ile sql eğitim setime devam ediyorum. Bu dersimde sql’de tarih formatları ve convert etme işlemlerine bakacağız.
SQL DateTime Convert, Convert ve Datetime Veri Tipleri
SQL’de tarih formatları her zaman bize sıkıntılar çıkartmıştır. Çünkü çok fazla tarih formatı bulunmaktadır. Örnek vermemiz gerekirse 2019’un 9. ayının 8. günü dediğimizde; Türkiye’de bunu 08.09.2019 yani gün ay yıl olarak yazarız ama amerikada bu 09.08.2019 yani ay gün yıldır. Bunun haricinde ayraç olarak nokta kullandık ama bu ayraçları ( – ) yada ( / ) şeklinde kullanımları da vardır. Sadece bunlarda değil 8 Eyl 2019 şeklinde kullanım şekillerinden tutunda saat bilgilerini içeren formatları da vardır. Yani bir hayli miktarda tarih formatı vardır.
SQL Tarih Veri Tipleri (Date/Time Datatypes)
Veri Tipi |
Özelliği |
Çıktısı |
time |
Sadece saati hh:mm:ss[.nnnnnnn] şeklinde tutar. 00:00:00.0000000 ile 23:59:59.9999999 arası değer alır. | 12:35:29. 1234567 |
date | 1 Ocak 0001 – 31 Aralık 9999. Sadece tarih içerir, saati saklamaz. | 2007-05-08 |
smalldatetime | 1 Ocak 1900 – 6 Haziran 2079. 1 dakikalık doğruluk hassasiyeti vardır. | 2007-05-08 12:35:00 |
datetime | 1 Ocak 1753 – 31 Aralık 9999. 3.33 milisaniye doğruluk hassasiyeti vardır. | 2007-05-08 12:35:29.123 |
datetime2 | datetime göre daha hassas şekilde YYYY-MM-DD hh:mm:ss[.nnnnnnn] tarih tutar. saniye bölümünün ondalık kısmında 7 basamağa kadar değer tutabilir. | 2007-05-08 12:35:29. 1234567 |
datetimeoffset | Kullanımı ve tarih aralığı datetime2 ile aynıdır. Ülkelere göre değişen zaman farkını da tutmamıza olanak sağlar. YYYY-MM-DD hh:mm:ss[. nnnnnnn] [{+-}hh:mm] şeklinde tarihi tutar. | 2007-05-08 12:35:29.1234567 +12:15 |
Yukarıdaki tabloda gördüğünüz gibi sadece tarih belirtmek için bile 6 farklı veri tipi bulunuyor.
Sql Tarih Convert (SQL DateTime Convert)
Aşağıda tüm convert modellerini görebilirsiniz.
SELECT CONVERT ( Donusecek Tip (DateTime, VarChar gibi), Donusmesi Istenen Veri, Tip Kodu)
--Format: mon dd yyyy hh:mmAM (or PM) --Çıktı: Dec 7 2018 4:09PM SELECT convert(varchar, getdate(), 100) --Format: mm/dd/yyyy --Çıktı: 12/07/2018 SELECT convert(varchar, getdate(), 101) --Format: yyyy.mm.dd --Çıktı: 2018.12.07 SELECT convert(varchar, getdate(), 102) --Format: dd/mm/yyyy --Çıktı: 07/12/2018 SELECT convert(varchar, getdate(), 103) --Format: dd.mm.yyyy --Çıktı: 07.12.2018 SELECT convert(varchar, getdate(), 104) --Format: dd-mm-yyyy --Çıktı: 07-12-2018 SELECT convert(varchar, getdate(), 105) --Format: dd mon yyyy --Çıktı: 07 Dec 2018 SELECT convert(varchar, getdate(), 106) --Format: mon dd, yyyy --Çıktı: Dec 07, 2018 SELECT convert(varchar, getdate(), 107) --Format: hh:mm:ss --Çıktı: 15:49:24 SELECT convert(varchar, getdate(), 108) --Format: mon dd yyyy hh:mm:ss:mmmAM (or PM) --Çıktı: Dec 7 2018 3:50:13:540PM SELECT convert(varchar, getdate(), 109) --Format: mm-dd-yyyy --Çıktı: 12-07-2018 SELECT convert(varchar, getdate(), 110) --Format: yyyy/mm/dd -- yyyymmdd - ISO date format - international standard - works with any language setting --Çıktı: 2018/12/07 SELECT convert(varchar, getdate(), 111) --Format: yyyymmdd --Çıktı: 20181207 SELECT convert(varchar, getdate(), 112) --Format: dd mon yyyy hh:mm:ss:mmm --Çıktı: 07 Dec 2018 15:53:14:053 SELECT convert(varchar, getdate(), 113) --Format: hh:mm:ss:mmm(24h) --Çıktı: 15:54:05:693 SELECT convert(varchar, getdate(), 114) --Format: yyyy-mm-dd hh:mm:ss(24h) --Çıktı: 2018-12-07 15:54:23 SELECT convert(varchar, getdate(), 120) --Format: yyyy-mm-dd hh:mm:ss.mmm --Çıktı: 2018-12-07 15:55:15.630 SELECT convert(varchar, getdate(), 121) --Format: yyyy-mm-ddThh:mm:ss.mmm --Çıktı: 2018-12-07T15:55:44.147 SELECT convert(varchar, getdate(), 126) --Without century (YY) date / datetime conversion - there are exceptions! --Format: mon dd yyyy hh:mmAM (or PM) --Çıktı: Dec 7 2018 3:56PM SELECT convert(varchar, getdate(), 0) --Format: mm/dd/yy --Çıktı: 12/07/18 SELECT convert(varchar, getdate(), 1) --Format: yy.mm.dd --Çıktı: 18.12.07 SELECT convert(varchar, getdate(), 2) --Format: dd/mm/yy --Çıktı: 07/12/18 SELECT convert(varchar, getdate(), 3) --Format: dd.mm.yy --Çıktı: 07.12.18 SELECT convert(varchar, getdate(), 4) --Format: dd-mm-yy --Çıktı: 07-12-18 SELECT convert(varchar, getdate(), 5) --Format: dd mon yy --Çıktı: 07 Dec 18 SELECT convert(varchar, getdate(), 6) --Format: mon dd, yy --Çıktı: Dec 07, 18 SELECT convert(varchar, getdate(), 7) --Format: hh:mm:ss --Çıktı: 16:02:32 SELECT convert(varchar, getdate(), 8) --Format: mon dd yyyy hh:mm:ss:mmmAM (or PM) --Çıktı: Dec 7 2018 4:03:02:100PM SELECT convert(varchar, getdate(), 9) --Format: mm-dd-yy --Çıktı: 12-07-18 SELECT convert(varchar, getdate(), 10) --Format: yy/mm/dd --Çıktı: 18/12/07 SELECT convert(varchar, getdate(), 11) --Format: yymmdd --Çıktı: 181207 SELECT convert(varchar, getdate(), 12) --Format: dd mon yyyy hh:mm:ss:mmm --Çıktı: 07 Dec 2018 16:05:07:547 SELECT convert(varchar, getdate(), 13) --Format: hh:mm:ss:mmm(24h) --Çıktı: 16:05:34:363 SELECT convert(varchar, getdate(), 14) --Format: yyyy-mm-dd hh:mm:ss(24h) --Çıktı: 2018-12-07 16:06:14 SELECT convert(varchar, getdate(), 20) --Format: yyyy-mm-dd hh:mm:ss.mmm --Çıktı: 2018-12-07 16:06:43.970 SELECT convert(varchar, getdate(), 21) --Format: mm/dd/yy hh:mm:ss AM (or PM) --Çıktı: 12/07/18 4:06:59 PM SELECT convert(varchar, getdate(), 22) --Format: yyyy-mm-dd --Çıktı: 2018-12-07 SELECT convert(varchar, getdate(), 23) --Format: hh:mm:ss --Çıktı: 16:08:11 SELECT convert(varchar, getdate(), 24) --Format: yyyy-mm-dd hh:mm:ss.mmm --Çıktı: 2018-12-07 16:08:28.353 SELECT convert(varchar, getdate(), 25)
Bunlar Convert işlemi kullanılarak yapılan modellerdi.
Tarih Veri Tipi Dönüşümleri
Şimdi Cast işlemi ile yapılan convert modellerini görelim. Buna aslında veri tipi dönüşümü diyebiliriz.
Select Cast(dönüşecek veri (nvarchar(*)) as dönüşecek_tip) as Alias
-- DateTimeOffset'den Time Dönüş. -- Sonuç: 12:35:29.1234567 SELECT CAST('2007-05-08 12:35:29. 1234567 +12:15' AS time(7)) AS 'time' -- DateTimeOffset'den Date Dönüş. -- Sonuç: 2007-05-08 SELECT CAST('2007-05-08 12:35:29. 1234567 +12:15' AS date) AS 'date' -- DateTime'dan SmallDateTime Dönüş. -- Sonuç: 2007-05-08 12:35:00 SELECT CAST('2007-05-08 12:35:29.123' AS smalldatetime) AS 'smalldatetime' -- DateTime'dan DateTime Dönüş. -- Sonuç: 2007-05-08 12:35:29.123 SELECT CAST('2007-05-08 12:35:29.123' AS datetime) AS 'datetime' -- DateTimeOffset'den DateTime2 Dönüş. -- Sonuç: 2007-05-08 12:35:29.1234567 SELECT CAST('2007-05-08 12:35:29. 1234567 +12:15' AS datetime2(7)) AS 'datetime2' -- DateTimeOffset'den DateTime2 Dönüş. -- Sonuç: 2007-05-08 12:35:29.1234567 SELECT CAST('2007-05-08 12:35:29.1234567 +12:15' AS datetimeoffset(7)) AS 'datetimeoffset' -- Date'den DateTime Dönüş. -- Sonuç: 2007-05-08 00:00:00.000 SELECT CAST('2007-05-08' AS datetime) AS 'datetime' -- Date'den SmallDateTime Dönüş. -- Sonuç: 2007-05-08 00:00:00 SELECT CAST('2007-05-08' AS smalldatetime) AS 'smalldatetime' -- Date'den DateTimeOffset Dönüş. -- Sonuç: 2007-05-08 00:00:00.0000000 +00:00 SELECT CAST('2007-05-08' AS datetimeoffset) AS 'datetimeoffset'
SQL Tarih Formatları, Convert ve Datetime Veri Tipler bu kadar arkadaşlar. Diğer derslerimizde görüşmek üzere.
Microsoft SQL Server & T-SQL Eğitim Seti ders listesi için tıklayınız.
Buradan C# Eğitim Setimde yayınladığım Github projeme ulaşabilirsiniz.
Sağlıcakla ve Takipte Kalın.