MS Sql de manuel olarak tarih alanı elde etmek için yıl, ay, gün pametreleri alan scalar fonksiyon oluşturma
MS SQL de tarih verisini bazı durumlarda manuel oluşturması gerekebilir. Böyle durumlarda gün, ay ve yıl bilgilerini parametre olarak gönderip tarih verisi elde edebilmek için kullanıcı tanımlı bir fonksiyon yazılabilir. Zira bu üç parametrenin bir kısmı bir formül veya bir alandan elde edilebilir, bir kısmı manuel verilebilir. Ayrıca ay ve gün 1 veya 2 karakter olarak gönderilebilir.
Aşağıda kullanıcı tanımlı scalar fonksiyon oluşturulması ve kullanılması verilmiştir.
CREATE FUNCTION [dbo].[FN_TARIHLE] (@Yil int,@Ay int,@Gun int)
RETURNS varchar(8) AS
BEGIN
Declare @Sonuc varchar(8)
IF LEN(CONVERT(NVARCHAR,@Yil))=4
BEGIN
SET @Sonuc=CONVERT(NVARCHAR,@Yil)
END
IF LEN(CONVERT(NVARCHAR,@Ay))=1
BEGIN
SET @Sonuc=@Sonuc+'0'+CONVERT(NVARCHAR,@Ay)
END
IF LEN(CONVERT(NVARCHAR,@Ay))=2
BEGIN
SET @Sonuc=@Sonuc+CONVERT(NVARCHAR,@Ay)
END
IF LEN(CONVERT(NVARCHAR,@Gun))=1
BEGIN
SET @Sonuc=@Sonuc+'0'+CONVERT(NVARCHAR,@Gun)
END
IF LEN(CONVERT(NVARCHAR,@Gun))=2
BEGIN
SET @Sonuc=@Sonuc+CONVERT(NVARCHAR,@Gun)
END
Return @Sonuc
END
Fonksiyonunun kullanılışı
SELECT dbo.FN_TARIHLE(2014,2,7)
veya
SELECT dbo.FN_TARIHLE(2014,02,07)
veya
SELECT dbo.FN_TARIHLE(YEAR(GETDATE()),MONTH(GETDATE()),01)