Interbase'de Date bir değeri Substring ile copy etme..

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
aLonE CoDeR
Kıdemli Üye
Mesajlar: 1223
Kayıt: 26 Nis 2005 04:08

Interbase'de Date bir değeri Substring ile copy etme..

Mesaj gönderen aLonE CoDeR »

Merhaba.

Interbase'de bir "Date" değeri SubString ile copy ederken "Ay"'ı text olarak döndürüyor. Alan domainden "Date" formatında ama örnegin "01.04.2005" için "01.APR.2005" olarak döndürüyor. Case ile (veya if ile) kontrol edip gerekli düzenlemeyi yapmaktan başka çözüm önerebilir misiniz mümkünse..

Not : Bölgesel ayarlarda vs.de bi sorun yok, SubString kullanmadan yapılan tüm işlemler stabil çalışıyor..

Teşekkürler..
Kullanıcı avatarı
vkamadan
Kıdemli Üye
Mesajlar: 1935
Kayıt: 17 Mar 2004 03:52
Konum: Adapazarı
İletişim:

Mesaj gönderen vkamadan »

erhaba ,
interbasede tam karşılığı nedir tam olarak bilmiyorum ama ben bu tür işlerde MySQL de önce alanı VarChar a CAST edip öyle SubString ile parçalıyorum yani şöyle bi model

Kod: Tümünü seç

SUBSTRING(CAST(TARIH AS CHAR),1,2) AS NEW_FIELD
gibi iyi çalışmalar.
Volkan KAMADAN
www.polisoft.com.tr
aLonE CoDeR
Kıdemli Üye
Mesajlar: 1223
Kayıt: 26 Nis 2005 04:08

Mesaj gönderen aLonE CoDeR »

Aynı şekilde döndürdü maalesef..İlginiz için teşekkürler..
fduman
Moderator
Mesajlar: 2749
Kayıt: 17 Ara 2004 12:02
Konum: Ankara

Mesaj gönderen fduman »

Nasıl kullanıyorsun? Yani kopyalama amacı nedir? Karşılaştırma mı? Yoksa varchar bir alana mı atıyorsun?
aLonE CoDeR
Kıdemli Üye
Mesajlar: 1223
Kayıt: 26 Nis 2005 04:08

Mesaj gönderen aLonE CoDeR »

Direkt tarih tipinde bir değişkene atıyorum..

Kod: Tümünü seç

    vStartDate = Cast ('01.'||SubString (Cast (In_StartDate as Varchar(10)) from 4 for 2)
      ||'.'||SubString (Cast (In_StartDate as Varchar(10)) from 7 for 4) as Date);
@VKadaman'ın önerisi üzerine bu hale getirmiştim.
yapmak istediğim olay basitçe;
örneğin 14.04.2005 olarak verilen bir tarihi 01.04.2005 olarak kullanmak..

Teşekkürler..
Kullanıcı avatarı
vkamadan
Kıdemli Üye
Mesajlar: 1935
Kayıt: 17 Mar 2004 03:52
Konum: Adapazarı
İletişim:

Mesaj gönderen vkamadan »

merhaba ozaman şöyle bir yola gidilebilir,
Tarih parçalama fonksiyonlarında yararlanabiliriz örneğin,

Kod: Tümünü seç

SELECT YEAR(TARIH) AS YIL , MONTH(TARIH) AS AY , DAY(TARIH) AS GUN FROM TALBE.....
şeklinde degerleri elde edip üzerinde gerekli artırımları yapıp CONCAT edip yeri değeri elde edebiliriz die düşünüyorum.
iyi çalışmalar.
Volkan KAMADAN
www.polisoft.com.tr
aLonE CoDeR
Kıdemli Üye
Mesajlar: 1223
Kayıt: 26 Nis 2005 04:08

Mesaj gönderen aLonE CoDeR »

Öncelikle ilginiz için teşekkürler..Sitede aramaya devam edince (baya aramıştım çünkü) şöyle bi çözüm örneği gördüm;

Kod: Tümünü seç

    vStartDate = Cast ('01.'||extract(month from IN_StartDate)||'.'||extract(year from IN_StartDate) as Date);
Bu şekilde çözdüm..

Kolay gelsin..
Cevapla