SQL'de tarihi yazdığımda "ölçüt ifadesinde veri türü uy

Firebird ve Interbase veritabanları ve SQL komutlarıyla ilgli sorularınızı sorabilirsiniz. Delphi tarafındaki sorularınızı lütfen Programlama forumunda sorunuz.
Cevapla
Kullanıcı avatarı
hdayi
Kıdemli Üye
Mesajlar: 1284
Kayıt: 29 Oca 2004 01:53
Konum: Erciyes'in eteklerinden.

SQL'de tarihi yazdığımda "ölçüt ifadesinde veri türü uy

Mesaj gönderen hdayi »

Umarım doğru forumdur, ben de hata yaparsam admin beni keser :wink:

Kod: Tümünü seç

select * from nikah where basvurutarihi='11.06.2004'
bunu yazdığımda
ölçüt ifadesinde veri türü uyuşmazlığı
diye bir mesaj alıyorum.
Access ve ado kullanıyorum. Program içerisinde parametre olarak tarihi gönderdiğim zaman bir problem çıkmıyor. Tarih formatım bu ve forumda yaptığım aramaya göre bunu böyle kullananlar var.

Acces'den kopya çektim

Kod: Tümünü seç

select * from nikah where basvurutarihi=#06/11/2004#
şeklinde yapıyor. Ben bunu yapınca çalışıyor.

Neden acaba?
Bişnev in ney çün hikâyet mîküned
Ez cüdâyîhâ şikâyet mîküned
Resim
Kullanıcı avatarı
husonet
Admin
Mesajlar: 2962
Kayıt: 25 Haz 2003 02:14
Konum: İstanbul
İletişim:

Mesaj gönderen husonet »

İki tırnak içerisine alınan ifadeler String olarak tanınır. Bunu tarih olarak yorumlayamıyor olabilir. Çünkü date tipleri Database ten database faklılık göstereceğini zannederim mesala bazı database formatlarında gg/aa/yyyy bazılarında ise aa/gg/yyyy şeklinde format almaktadır.

Kolay Gelsin...

Gazete manşetleri
* DİKKAT :Lütfen forum kurallarını okuyalım ve uyalım...!
* Warez,crack vs. paylaşımı kesinlikle yasaktır.
Kullanıcı avatarı
efkan
Üye
Mesajlar: 155
Kayıt: 31 Oca 2004 07:47
Konum: Tekirdağ
İletişim:

Sorunuzun cevabı ...

Mesaj gönderen efkan »

HDAYI "ölçüt ifadesinde veri türü uyuşmazlığı" hatası aldığını yazmış.. bu yazı Access veri tabanında
Sayısal yada tarihsel bir alana string ifade girildiğinde alınır.

Husonet in cevabı doğru.
Bilgisayar Programcısı/Analyst ve Sistem Yöneticisi
Kullanıcı avatarı
hdayi
Kıdemli Üye
Mesajlar: 1284
Kayıt: 29 Oca 2004 01:53
Konum: Erciyes'in eteklerinden.

Mesaj gönderen hdayi »

Tırnaksız olarak yazdığımda da aynı hatayı alıyorum. :(
Bişnev in ney çün hikâyet mîküned
Ez cüdâyîhâ şikâyet mîküned
Resim
Kullanıcı avatarı
husonet
Admin
Mesajlar: 2962
Kayıt: 25 Haz 2003 02:14
Konum: İstanbul
İletişim:

Re: SQL'de tarihi yazdığımda "ölçüt ifadesinde veri tür

Mesaj gönderen husonet »

hdayi yazdı:Umarım doğru forumdur, ben de hata yaparsam admin beni keser :wink:

Kod: Tümünü seç

select * from nikah where basvurutarihi='11.06.2004'
bunu yazdığımda
ölçüt ifadesinde veri türü uyuşmazlığı
diye bir mesaj alıyorum.
Access ve ado kullanıyorum. Program içerisinde parametre olarak tarihi gönderdiğim zaman bir problem çıkmıyor. Tarih formatım bu ve forumda yaptığım aramaya göre bunu böyle kullananlar var.

Acces'den kopya çektim

Kod: Tümünü seç

select * from nikah where basvurutarihi=#06/11/2004#
şeklinde yapıyor. Ben bunu yapınca çalışıyor.

Neden acaba?

Kod: Tümünü seç

var 
Tarih1, Tarih2 : TDate; 
begin 
query1.sql.clear; 
query1.sql.add('Select * from Tablo'); 
query1.sql.add('Where TARIH Between :BASLANGICTARIH'); 
query1.parambyname('BASLANGICTARIH').asdate :=strtodate(11.06.2004); 
Bu şekilde de yapabilirsin.
Birde Access veri tabanında Tarih alanları için yapılacak sorgularda # kullanılır.

Kolay Gelsin...

Gazete manşetleri
* DİKKAT :Lütfen forum kurallarını okuyalım ve uyalım...!
* Warez,crack vs. paylaşımı kesinlikle yasaktır.
Kullanıcı avatarı
sairalper
Üye
Mesajlar: 23
Kayıt: 15 May 2007 04:54
Konum: Bursa
İletişim:

Re: SQL'de tarihi yazdığımda "ölçüt ifadesinde veri tür

Mesaj gönderen sairalper »

husonet yazdı:

Kod: Tümünü seç

var 
Tarih1, Tarih2 : TDate; 
begin 
query1.sql.clear; 
query1.sql.add('Select * from Tablo'); 
query1.sql.add('Where TARIH Between :BASLANGICTARIH'); 
query1.parameters.parambyname('BASLANGICTARIH').asdate :=strtodate(11.06.2004); 
Bu şekilde de yapabilirsin.
Birde Access veri tabanında Tarih alanları için yapılacak sorgularda # kullanılır.

Kolay Gelsin...
soruyu soran ben değilim ama faydalananlardan biriyim.
Teşekkürler Hüseyin Bey...
Ayrıca verdiğiniz kodda ufak bir değişiklik yaptım.
Parametrenin date olması şart değil... parametreyi string yapıp

Kod: Tümünü seç

query1.Parameters.ParamByName('Tarih').Value:='15.12.2008';
şeklinde de kullanabiliriz.
bu arada belirteyim, ben access veritabanı ve ADOQuery kullanıyorum.
En son sairalper tarafından 15 Ara 2008 04:03 tarihinde düzenlendi, toplamda 1 kere düzenlendi.
Kullanıcı avatarı
csunguray
Üye
Mesajlar: 855
Kayıt: 09 Ara 2006 05:08
Konum: Adana
İletişim:

Re: SQL'de tarihi yazdığımda "ölçüt ifadesinde veri türü uy

Mesaj gönderen csunguray »

Kod: Tümünü seç

select * from nikah where basvurutarihi='2004-06-11'
şeklinde yazın. Yukarıdaki yazım ISO standardırna uygundur ve ben MS-SQL'de yıllardır sorunsuz kullanmakla beraber diğer veritabanı sunucularında da sorunsuz çalışacağını sanıyorum.
C. Sunguray
csunguray at netbilisim.kom
Net Bilişim Hizmetleri

Sıradan her programcı bilgisayarın anlayabileceği kodlar yazabilir.
Sadece iyi programcılar insanların da anlayabileceği kodlar yazarlar.
Martin Fowler (http://martinfowler.com/)
akdatilla
Üye
Mesajlar: 292
Kayıt: 02 Nis 2006 06:04
Konum: Antalya

Re: SQL'de tarihi yazdığımda "ölçüt ifadesinde veri türü uy

Mesaj gönderen akdatilla »

merhaba
konu biraz fazla uzamış ama bende bu konu hakkında bir yöntem yazayım(msacces için)

Kod: Tümünü seç

ADOQuery1.SQL.Text:='select * from tablo where tarih='+inttostr(Round(tarih1.Date));
Ali Erdoğan
Kıdemli Üye
Mesajlar: 1026
Kayıt: 11 Şub 2005 02:12
Konum: İstanbul

Re: SQL'de tarihi yazdığımda "ölçüt ifadesinde veri türü uy

Mesaj gönderen Ali Erdoğan »

Bilgisayarda ayarlı tarih formatına göre bu sorun oluşabilir. Yani tarih formatı gg.aa.yyyy için bu sorun olmazken bölgesel ayarlardan tarih formatı gg/aa/yyyy olarak ayarlanmış sistemlerde bu sorunla karşılaşabilirsin.
Kullanıcı avatarı
csunguray
Üye
Mesajlar: 855
Kayıt: 09 Ara 2006 05:08
Konum: Adana
İletişim:

Re: SQL'de tarihi yazdığımda "ölçüt ifadesinde veri türü uy

Mesaj gönderen csunguray »

Bilgisayarda ayarlı tarih formatına göre bu sorun oluşabilir. Yani tarih formatı gg.aa.yyyy için bu sorun olmazken bölgesel ayarlardan tarih formatı gg/aa/yyyy olarak ayarlanmış sistemlerde bu sorunla karşılaşabilirsin.
Bunu kime cevaben yazdığını bilmiyorum ama bilgisayarınızın bölgesel ayarının bir önemi yoktur. Önemli olan SQL sunucunuzun dil ayarıdır. En azından MS-SQL be MySQL için bu böyle.
C. Sunguray
csunguray at netbilisim.kom
Net Bilişim Hizmetleri

Sıradan her programcı bilgisayarın anlayabileceği kodlar yazabilir.
Sadece iyi programcılar insanların da anlayabileceği kodlar yazarlar.
Martin Fowler (http://martinfowler.com/)
Cevapla