MSSQL Tarih Alanı sorunu

MS SQL Server veritabanı ve SQL komutlarıyla ilgli sorularınızı sorabilirsiniz. Delphi tarafındaki sorularınızı lütfen Programlama forumunda sorunuz.
Cevapla
Glen
Üye
Mesajlar: 277
Kayıt: 12 Eki 2005 11:58

MSSQL Tarih Alanı sorunu

Mesaj gönderen Glen »

Selam arkadaslar.

MSSQL de (forumda daha once konusulmus arattim ancak buradaki cogu seyi okumama ragmen + sql helpine + google a bakmama ragmen cozemedim.. sanirim sorun bende herneyse:)) tarih sorgulamasi yapamiyorum..

Alan tipi DateTime oldugu icin ve de Saati de yazdigi icin bir türlü sorgulamam gerceklesemiyor. Time alanindaki degerleri 00:00:00 yaptigimda sadece tarih olayi kaliyor ve sorgulamami gerceklestirebiliyorum...

SELECT TARIH FROM TABLE1 WHERE DATE(TARIH) = 12.09.2005 gibi bir SQL cümlesi varmi ? veya bunun disinda alternatif bir cözüm.

Ayrica, SELECT GETDATE() yapip bugunun tarihini mssqlden alip, o gune ait olan kayitlari getirmeye cali$iyorum ancak, GETDATE() fonksiyonu time 'ı da yaninda getirdigi icin, Ayni gundeki kayitlar degil de ayni gunun ayni saatinin ayni dakikasinin ayni saniyesindeki kayitlari getirmeye calisiyor sanirim :) Ancak benim istedigim, Getdate() den aldigi tarihin sadece Tarih kismini alip, veritabaninda sadece o Tarihe ait bilgilerin getirilmesi.

Şimdiden teşekkür ederim. Kolay gelsin.
Kullanıcı avatarı
aslangeri
Moderator
Mesajlar: 4322
Kayıt: 26 Ara 2003 04:19
Konum: Ankara
İletişim:

Mesaj gönderen aslangeri »

s.a.
sanırı yeterince arama yapmamışsın.
1. mysql in tarih formatı gg.aa.yyyy şeklinde değil (yanlış hatırlamıyorsam) bu forumda geçen bir konu.
2. tarih alanında(ve diğer where li sorgularda) parametre kullanılarak yapılması tavsiye edilir. buda forumda gecen konulardan biri.

kolay gelsin. :aramaya devam. :wink:
Duyduğun Şeylerin Söylediklerim Olduğuna Eminim Ama
Anladığın Şeylerin Anlatmak İstediklerim Olduğuna Emin Değilim
Kullanıcı avatarı
Kuri_YJ
Moderator
Mesajlar: 2248
Kayıt: 06 Ağu 2003 12:07
Konum: İstanbul
İletişim:

Mesaj gönderen Kuri_YJ »

Selamlar,

Kod: Tümünü seç

  SELECT * 
  FROM MY_TABLE
  WHERE FIELD_TARIH1 >= :DT_TARIH1
    AND FIELD_TARIH1 < :DT_TARIH2
Bu kod ile istediğini ztarihi (Günü alabilirsiniz)

Örneğin siz 15.12.2005 tarihini istiyorsunuz. O zaman Yukarıdaki sorgudaki parametreler şu değerleri yüklemelisiniz.

Kod: Tümünü seç

  Query1.Parameters.ParamByName('DT_TARIH1').Value := dtpTarih1.Date ;
  Query1.Parameters.ParamByName('DT_TARIH2').Value := dtpTarih2.Date ;
  Query1.Open ;
Alternatif olarak da, farklı metodlar uygulanabnilir. Doğrudan Tarihi SQL'in textine yapışitırarak da yapabilirsiniz. Ama ben Parametreli kullanımı tercih ediyor ve tavsiye ediyorum.

Ayrıca, yukarıdaki örnek, bir ADOQuery nesnesine göre hazırlandı.

Bunlara ek bir şey daha, eğer tarih tuttuğunuz bir alana Saat değerlerini de yüklüyorsanız, her zaman bu sıkıntıyı yaşarsınız. Onun yerine daha tasarım aşamasında hangi alanlar Tarih hangi alanlar Tarih+Saat olacak belirleyip buna göre hareket edilse daha iyi olur.

Kolay Gelsin
Kuri Yalnız Jedi
Harbi Özgürlük İçin Pisi http://www.pisilinux.org/
Glen
Üye
Mesajlar: 277
Kayıt: 12 Eki 2005 11:58

Mesaj gönderen Glen »

Çok teşekkür ederim Adnan abim. Verdiğin kodla yaptım ;) bu arada trunc() olayi gerekiyormuş dediğin gibi.. Sağolasin :D
Kullanıcı avatarı
aslangeri
Moderator
Mesajlar: 4322
Kayıt: 26 Ara 2003 04:19
Konum: Ankara
İletişim:

Mesaj gönderen aslangeri »

tekrar selam.
sanırım bir yanlış anlaşılma olmuş.
aslangeri yazdı:1. mysql in tarih formatı gg.aa.yyyy....
mssql ile karıştırmışım.

:oops: kusura bakmayın.
iyi çalşmalar.
Duyduğun Şeylerin Söylediklerim Olduğuna Eminim Ama
Anladığın Şeylerin Anlatmak İstediklerim Olduğuna Emin Değilim
Cevapla