MS Sql veri tabanı üzerinde oluşturduğumuz tablolar da kullandığımız datetime veri tipi genellikle yaptığımız sorgularda kullandığımız tarih formatıyla uyuşmadığından dolayı sıklıkla sorunlarla karşılaşırız.
Bu makalemde veri tabanında önemli bir veri tipi olan datetime veri tipini inceleyerek, sorgu sırasında oluşturduğumuz tipe göre doğru tarih formatını kullanmayı veya farklı tarih formatlarıyla sorgulama yaptığımızda veri tabanımızda ki datetime tipine nasıl convert edeceğimiz göstererek sorgularımızın daha sağlıklı bir şekilde çalışması konusunda sizlere yardımcı olacak ipucular vermeye çalışacağım.
Sql Tarihsel Veri Tipleri (Date/Time Datatypes)
Sql tarih (datetime) tipleri nelerdir? Nasıl kullanılır? Hangi değerleri sunarlar?
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 |
Sql Date Time Tip Dönüştürme?
Sql tarih (datetime) tipler nasıl dönüştürülür?
Veri tabanındaki tablomuzun verisi hangi veri tipinde olursa olsun sorgu sırasında istediğimiz tarih tipine cast operatörünü kullanarak dönüştürebiliriz.
-- 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'
One comment
Comments are closed.