2007-01-04

Tarih Farkı

/*
İki Tarih Arasindaki Farkı gün, saat ve dakika cinsinden bulur.
*/

CREATE PROCEDURE TarihFarki
@start AS SMALLDATETIME,
@end AS SMALLDATETIME

AS

DECLARE @sure BIGINT
DECLARE @dakika INT
DECLARE @saat INT
DECLARE @gun INT
DECLARE @MSG AS VARCHAR(64)

SET @gun=0
SET @sure=DATEDIFF(MINUTE,@start, @end)

IF (@sure>=1440)
BEGIN
SET @gun=CAST((@sure/1440) AS INT)
SET @sure=@sure-@gun*1440
END
SET @dakika=@sure%60
SET @saat=CAST((@sure/60) AS INT)
SET @MSG='İki tarih arasındaki fark ' + CAST(@gun AS VARCHAR(5)) +' gün ' + CAST(@saat AS VARCHAR(5)) + ' saat ' + cast(@dakika AS VARCHAR(5)) + ' dakika'

SELECT @MSG

2007-01-03

User Defined Function


/*
Mevcut SQL fonksiyonları bize yetmediğinde kendi fonksiyonlarımızı yazarız. İhtiyaç duyduğunuz herhangi bir durum ve anda kullanabilirsiniz.

SP'lerin parametrelere değer atabilmelerine ve veri kümesi üretebilmelerine karşın fonksiyonlar hem değer döndürürler, hem SQL kodlarından kayıt kümesi üretirler, hem de içeride yeni bir kayıt kümesini geçici olarak oluşturup istemciye gönderebilirler. Bununla birlikte SP'ler fonksiyonların aksine bir değişkeni içeride değiştirip geri gönderebilirler.


Bir User Defined Function syntaxı aşağıdaki gibidir:
*/

/*
CREATE Fonksiyon_Adi(Giris_Parametreleri)
RETURNS Donus_Degeri
[WITH ]
AS
BEGIN
Fonksiyonun_Govdesi
RETURN Donus_Deyimi
END




Örnek vermek gerekirse Tarih bilgisindeki ayiraçlari istediğimiz gibi yapmak için aşağıdaki fonksiyonu kullanabiliriz:
*/

CREATE FUNCTION TarihFormati (@Tarih datetime, @Ayirac char(1))
RETURNS varchar(20)
AS
BEGIN
RETURN CONVERT(varchar(20),datepart(dd,@Tarih)) + @Ayirac + CONVERT(varchar(20),datepart(mm,@Tarih)) + @Ayirac + CONVERT(varchar(20),datepart(yy,@Tarih))
END




--Fonksiyonu oluşturduktan sonra aşağıdaki ifade ile sonucunu görebilirsiniz:
SELECTdbo.TarihFormati(GETDATE(),':')




/*
Sonuç: 9:1:2005 olur.
Fonsiyonu her yerden kullanabilirsiniz.Burda unutmamanız gereken nokta çağırdığınız yerde fonksiyonun owner ını yazmanız gerektiği. Yukarıda görüldüğü gibi ben dbo kullandım.
*/

.::YASAL UYARI::.

©2004-2025 Mehmet GÜZEL, www.mehmetguzel.net

Site içeriği kaynak gösterilmek koşuluyla yayınlanabilir. Yazılan yazı ve yorumlar sadece yazı ve yorum sahiplerini bağlar.