Yapılan herhangi bir işlemden sonra son kullanıcıya gösterilen işlem tarihi 1 dk önce, 15 dk önce, 1 saat önce, 2 gün önce gibi tarih değerlerini oluşturan fonksiyonu paylaşacağım. Tam tarih yerine ne kadar süre geçti diye göstermek isterseniz bu fonksiyonu kullanabilirsiniz. Fonksiyonda ek olarak önceyi gösterdiği gibi sonrayı da gösterebilir. yani projenin amacına göre 1 gün sonrasının tarih değeri girilirse 1 gün sonra gibi bir değer alınır. Fonksiyon bir tarih alır ve bir string geri gönderir.
Bugün için aşağıdaki fonksiyon çağrıldığın da ‘1 Ay Önce’ şeklinde bir değer geri döner.
1 |
SELECT dbo.FarkiBul('01.01.2018') |
SQL Fonksiyonu
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 |
SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO CREATE FUNCTION [dbo].[FarkiBul](@t datetime) RETURNS nvarchar(50) AS BEGIN DECLARE @s INT DECLARE @m VARCHAR(35) SET @s=DATEDIFF(s,@t,getdate()); IF @s<=-31536000 BEGIN return CONVERT(nvarchar, ABS(@s/31536000)) + ' Yıl Sonra'; END; IF @s<=-2592000 BEGIN return CONVERT(nvarchar, ABS(@s/2592000)) + ' Ay Sonra'; END; IF @s<=-604800 BEGIN return CONVERT(nvarchar, ABS(@s/604800)) + ' Hafta Sonra'; END; IF @s<=-86400 BEGIN return CONVERT(nvarchar, ABS(@s/86400)) + ' Gün Sonra'; END; IF @s<=-3600 BEGIN return CONVERT(nvarchar, ABS(@s/3600)) + ' Saat Sonra'; END; IF @s<=-60 BEGIN return CONVERT(nvarchar, ABS(@s/60)) + ' Dakika Sonra'; END; IF @s<=60 AND @s>=-60 BEGIN set @m= ' Şuan'; END; IF @s>= 31536000 BEGIN return CONVERT(nvarchar, @s/31536000) + ' Yıl Önce'; END; IF @s>= 2592000 BEGIN return CONVERT(nvarchar, @s/2592000) +' Ay Önce'; END; IF @s>= 604800 BEGIN return CONVERT(nvarchar, @s/604800) + ' Hafta Önce'; END; IF @s>=86400 BEGIN return CONVERT(nvarchar, @s/86400) + ' Gün Önce'; END; IF @s>=3600 BEGIN return CONVERT(nvarchar, @s/3600) + ' Saat Önce'; END; if @s>=60 BEGIN return CONVERT(nvarchar, @s/60) + ' Dakika Önce'; END; return @m; END |