Home » Posts tagged 'sql' (Sayfa 2)
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
Kullandığım Web Tasarım Programları

Emrah tasarım yaparken kullandığım alet edevatı sormuş ve beni mimlemiş bende üzerime düşeni yapıp cevap vereceğim.

Microsoft Front Page: Beni bu işlere ilk başladığımdan veri yalnız bırakmayan yegane programımdır. Her ne kadar son projemde beni üzsede yinede favorimdir.

Yeni Metin Belgesi: Tek kelimeyle dertlerimin dermanıdır, her zaman heryerdedir. Bazen olmasaydı ne yapardım diye düşünüyorum.

Adobe PhotoShop: Resim ve/veya tasarım deyince favorim photoshoptur. Adobe firmasını Macromedia yı aldıktan sonra daha da çok seviyorum.

Adobe Fireworks: Sadece birden fazla resmi aynı anda boyutlandırmak için kullanıyorum. Zamanında deli kasardım artık diğer özelliklerine ilgisizim.

Microsoft SQL Server Management Studio: Mssql 2005 ile birlikte gelen bu araç bolca uğraştığım veritabanları konusunda vazgeçilmezim.

CuteFTP: Adı üstünde FTP esasında FTP ile işim olmaz ama son zamanlarda fazlasıyla bulaşıyorum.

Google Chrome: Kendimi bileli IE kullanırdım taki Chrome çıkana kadar, artık varsayılan tarayıcım Chrome. Saygı duyuyorum, yalnız bir iki ekleme yapılması lazım :)

Microsoft Visual Studio 2008: .Net deyince akla ilk gelen editörümüz, esasında bu bir editör değil bir geliştirme ormanıdır. Son zamanlarda vaktimin tamamını burada geçiriyorum.

Kullandıklarımı yazarken hayatıma girme sıralarını göz önüne alarak yazmaya çalıştım. Bu alemde çok fazla isnan tanımadığım için bu mim i atacak kimsem yok :(  isteyen olursa ona paslarım ;)

SQL ile sıkça sorulan fonksiyonlar (Bölüm 1)
Select TOP 10 * From TABLOADI Order By ID DESC
Select Gruplanacak_AlanAdi From TABLOADI Group By Gruplanacak_AlanAdi
Select Sum(BirinciAlan-IkinciAlan) as 'Sonuc' From TABLOADI
Select Max(AlanAdi) as 'EnBuyuk' From TABLOADI
Select * From TABLOADI Order By NEWID()


1-
En son 10 kaydı listeler
2- Gruplanacak_AlanAdi içindeki verilere göre gruplama işlemi yapar.
3- BirinciAlan dan IkinciAlan ı çıkarıp sonucu Sonuc alanında gösterir.
4- Belirtilen alandaki en büyük değeri bulup EnBuyuk alanında sonucu görüntüler.
5- Bilgileri rastgele çağırmak için kullanılır. Eğer rastgele 5 veri çekmek istersek Select TOP 5 * From… dememiz yeterli olacaktır.
Denemeden yazdığım için ufak tefek syntax (bir nevi yazım yanlışı) hataları olabilir. Bildirirseniz sevinirim. Kolay gelsin..