SQL Tarih Formatı Kullanımı, Convert Etme ve Datetime Veri Tipleri

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

Bir Cevap Yazın