Firebird v1.5.2'de rastladığım ilginç birşeyi paylaşmak ve sizlere neden olabilir sormak istedim.
tabloda BASLANGIC adında TIMESTAMP türü bir alanım var.
Sorguda "select coalesce(BASLANGIC, '08.02.2005')" dersem eğer sonuç acaip bir tarih formatında geri dönüyor. Şöyle: 2005-02-09 08:00:00.0000 .
Normalde timestamp alanlarım 09.02.2005 08:00:00 şeklinde dönüyor. Neden coalesce, timestamp dönüş formatıyla bu şekilde oynuyor ve beni dönen değeri cast yapmaya zorluyor anlam vermiş değilim. Dökümanlarda bununla ilgili herhangi birşey bulamadım. Bu şekilde dönmesi eğer değeri karşılaştırmada kullanırsam, karşılaştırma sonucunun yanlış çıkmasına neden oluyor. Mesela başka bir timestamp veri ile karşılaştırırsam.
Dökümanın söylediği şu: coalesce, BASLANGIC alanı null değil ise dönen alanı BASLANGIC yapar, NULL ise '08.02.2005' yapar. (Kolay açıklamak için kullandığım parametreleri yazdım)
Yani diyeceğim şu ki null değilse aynı değeri falan döndürmüyor bu coalesce. sizce bir bug olabilir mi?
Bu arada bunu şöyle çözdüm:
cast(coalesce(BASLANGIC, '08.02.2005') as timestamp)
bu şekilde istediğim formatta gelmekle birlikte bu değeri karşılaştırmada kullanırsam da problem yaratmıyor.
Firebird'de coalesce sorunsalı.
Bu hata Firebird bug listesine eklenmiş bile. Ancak halen bunun bir bug olup olmadığı geliştirilerce tartışılıyor.
Buradan ulaşabilirsiniz:
http://sourceforge.net/tracker/index.ph ... tid=109028
Başınıza geldiğinde coalesce'in string mantığında çalıştığını unutmayın ve değer karşılaştırmalarında eğer değerler timestamp ise dönen değeri cast edin.
Buradan ulaşabilirsiniz:
http://sourceforge.net/tracker/index.ph ... tid=109028
Başınıza geldiğinde coalesce'in string mantığında çalıştığını unutmayın ve değer karşılaştırmalarında eğer değerler timestamp ise dönen değeri cast edin.