• 17-10-2014, 10:02:52
    #1
    Merhaba: Dahga önce Access olan veri tabanımızda üyelerin doğum tarihinden yaşını hesaplatıyordum. Bunun için de aşağıdaki fonksiyonu kullanıyordum. Veri tabanımdaki DTAR alanımız tarih-saat şeklindeydi.

    Daha sonra veritabanını MSSQL e geçirdik. Fakat bu kullandığım fonksiyon hata veriyor. Msssql de DTAR alanıma baktığımda Accesteki gibi gun.ay.yil değil de 1993-08-06 00:00:00.000 gibi çıkıyor. Ama ekrana yazdırdığımda 1993-08-06 geliyor

    Yapmak istediğim ise DTAR alanındaki tarihi kullanarak üyenin taşını hesaplamak.

    ' YAS HESAPLAMA FONKSIYONU    
                function yashesapla(byval tarih) 
                    tarih = cdate(tarih) 
                    dogdugugun = day(tarih) 
                    dogduguay = month(tarih) 
                    dogduguyil = year(tarih) 
                    bugun = day(date()) 
                    buay = month(date()) 
                    buyil = year(date()) 
                    if buay > dogduguay then 
                        yas = buyil - dogduguyil 
                    elseif buay < dogduguay then 
                        yas = buyil - dogduguyil' - 1 
                    elseif buay = dogduguay then 
                        if dogdugugun < bugun or dogdugugun = bugun then 
                            yas = buyil - dogduguyil 
                        else 
                            yas = buyil - dogduguyil' - 1 
                        end if 
                    end if 
                    yashesapla = yas 
                end function
  • 21-10-2014, 14:09:24
    #2
    Kimlik doğrulama veya yönetimden onay bekliyor.
    Muhtemelen mssql'de tablo özelliğini datetime seçtiniz. Bunu date yaparsanız saat dilimi gelmez
  • 22-10-2014, 21:35:07
    #3
    Kendine göre düzenleyebilirsin işine yarar umarım.

    create function [dbo].[yasBul] (@Id int) 
    returns varchar(50) 	
    as
    begin
    	declare @sonuc varchar(50) 	
    	----doğum tarihi yılı
            declare @dty varchar(50) 	
            set @dty = (select top 1 dty from Uyeler where Id = @Id)	
    
           -------- --bu yıl - doğum tarihi
            declare @yas int                	
    	set @yas =    datediff( year, CAST(@dty as datetime) ,GETDATE())
    
            set @sonuc = @yas
    	return @sonuc 
    end
  • 31-10-2014, 16:42:51
    #4
    Matriks adlı üyeden alıntı: mesajı görüntüle
    Kendine göre düzenleyebilirsin işine yarar umarım.

    create function [dbo].[yasBul] (@Id int) 
    returns varchar(50) 	
    as
    begin
    	declare @sonuc varchar(50) 	
    	----doğum tarihi yılı
            declare @dty varchar(50) 	
            set @dty = (select top 1 dty from Uyeler where Id = @Id)	
    
           -------- --bu yıl - doğum tarihi
            declare @yas int                	
    	set @yas =    datediff( year, CAST(@dty as datetime) ,GETDATE())
    
            set @sonuc = @yas
    	return @sonuc 
    end
    Nasıl kullanılıyor?