Sayenizde yine yeni şeyler öğrendik.
Ben bu CAST i pek fazla kullanmazdım. Meğer ne çok ince noktası varmış.
anladığım kadarıyla CAST önce alan değerini string e çeviriyor sonrada belirttiğiniz alana. Bu nedenlede date, timestamp gibi verileri sayısal bir değere çeviremiyorsunuz terside doğru.
peki bu integer bir alan date e çevrilemez mi? Sanırım bir yol buldum. @aslangeri nin SQL ifadesi şöyle olbilirdi.
Kod: Tümünü seç
UPDATE MALZEMETEMP M
SET
M.girist=cast( cast('4.7.2006' as date) - 732495 as date) + M.mlz_girt
WHERE NOT (M.MLZ_GIRT IS NULL)
Yalnız burda bir durum daha var.
Windows Date tipi ile Firebird Date, Timestamp tiplerindeki yaklaşım farklı. Windows da Date 31.12.1889 gece yarısından başlayan ve her gün için 1 değer artan bir biçimde iken, Firebird te Data Julien takvimini mutlak 0 alan ve her gün için 1 değer artan bir biçimde.
Haliyle Delphi de Date i integer a dönüştürüp veritabanına yazınca Windows yaklaşımında bir integer değer elde edilir (tahminen). Bu durumda firebird te direk dönüşüm yaparken iki yaklaşım arasındaki gün sayısını yukardaki toplama eklemek gerekecektir. Ben deneyemedim bir arkadaşımız denerse sonucu yazabilir mi lütfen.
Kolay gelsin.