MSSQL Tarih Saat Problemi ve Çözümü

Arkadaş işin içine tarih saat girince heryer karışıyor. Belki sadece bana oluyordur ama araştırdığım kadarıyla bu sıkıntıları herkes yaşıyor. Sıkıntıların başında tarihleri karşılaştıramama geliyor. Özellikle 29.01.2009 15:38:39 şeklindeki tarih saat formatındaki verilerde sürekli problem oluşuyor.

Veritabanındaki DateTime veri türündeki bir alana örneğin; DateTime.Now.ToString(“MM.dd.yyyy hh:mm:ss”) şeklinde verileri girdiğimizde, bu formattaki farklı bir tarihle karşılaştırma yapmak istediğimizde sıkıntı çıkıyor. Örnek sql sorgusu Select * from Tablo_Adi Where DateTime_Alan_Adi > ‘”+DateTime.Now.ToString(“MM.dd.yyyy hh:mm:ss”)+”‘ mantıken problem olmaması gerekiyor çünki yazdığımız verileri karşılaştırıyoruz, ama gelin görünki sapıtan bir sorgu.

Çözüm kısmında karşımıza sql in getDate() fonksiyonu çıkıyor.

Öncelikle MSSQL için Date Time fonksyionlarının burada anlatıldığını belirteyim.

İzleyeceğimiz yol gayet basit. Veritabanı işlemlerinde kullanacağımız tüm tarih işlemlerini getDate() ile yapacağız.

Örnek;
Insert into Tablo_Adi (alan_adi) Values (getDate()) — bu şekilde eklediğimiz bir bilgiyi şu şekilde çok sağlıklı bir şekilde karşılaştırabiliriz.

Select * From Tablo_Adi Where alan_adi > getDate() — gördüğünüz gibi değişkenler veya programlama dilimizin tarih saat fonksiyonlarını bir kenara koyup bu işler için sql in kendisini kullanıyoruz. Esasında en mantıklısıda bu, neden bu zaman kadar bunu düşünemedim bilmiyorum. Aklıma gelmişken yukarıda verdiğim Date Time fonksiyonlarını incelerseniz tarih işlemleri için hertürlü dönüşümü yapabilirsiniz.

Örnek;
getDate()
bize böyle bir çıktı veriyor = 29.01.2009 15:00:00
DATEADD(day, 10,getDate())
dediğimizde gün sayısına 10 ekliyoruz, eğer day yerine hh yazsaydık saati 10 saat ileri alacaktık = 02.02.2009 15:00:00
DATEPART(yy,getDate())
şeklinde sadece yılı alırız = 2009

Aşağıdaki tabloda yukarıdaki örneklerdeki kısaltmaların açıklamaları bulunuyor.

Açıklama Kısaltmalar
Yıl yy, yyyy
Çeyrek qq, q
Ay mm, m
Yılın Günü dy, y
Gün dd, d
Hafta wk, ww
Haftanın Günü dw
Saat hh
Dakika mi, n
Saniye ss, s
Milisaniye ms
  • emre

    eline sağlık…