Giriş yap

MySQL timeAgo Fonksiyonu

Daha önce PHP için timeAgo fonksiyonu paylaşmıştım. Bu fonksiyon ne yapıyordu? Bir tarih veriyordunuz şu formatta Y-m-d H:i:s ve oda size 2 gün önce, 3 saat önce, 1 yıl önce gibi sonuç döndürüyordu.

Bunun aynısını PHP kullanmadan bir MySQL fonksiyonu olarak nasıl yazarız? İşte size yazılmış bir fonksiyon örneği.

DELIMITER $$

DROP FUNCTION IF EXISTS `timeAgo`$$

CREATE FUNCTION `timeAgo`(zaman DATETIME) RETURNS VARCHAR(100) CHARSET utf8
BEGIN

	DECLARE sonuc VARCHAR(100) DEFAULT '';
	DECLARE fark INT(11);
	
	SELECT UNIX_TIMESTAMP() - UNIX_TIMESTAMP(zaman) INTO fark;
	
	IF fark > 60 * 60 * 24 * 7 * 4 * 12
		THEN SELECT CONCAT(ROUND(fark / 60 / 60 / 24 / 7 / 4 / 12), " yıl önce") INTO sonuc;
	ELSEIF fark > 60 * 60 * 24 * 7 * 4
		THEN SELECT CONCAT(ROUND(fark / 60 / 60 / 24 / 7 / 4), " ay önce") INTO sonuc;
	ELSEIF fark > 60 * 60 * 24 * 7
		THEN SELECT CONCAT(ROUND(fark / 60 / 60 / 24 / 7), " hafta önce") INTO sonuc;
	ELSEIF fark > 60 * 60 * 24
		THEN SELECT CONCAT(ROUND(fark / 60 / 60 / 24), " gün önce") INTO sonuc;
	ELSEIF fark > 60 * 60
		THEN SELECT CONCAT(ROUND(fark / 60 / 60), " saat önce") INTO sonuc;
	ELSEIF fark > 60
		THEN SELECT CONCAT(ROUND(fark / 60), " dakika önce") INTO sonuc;
	ELSEIF fark > 0
		THEN SELECT CONCAT(fark, " saniye önce") INTO sonuc;
	ELSE
		SELECT "az önce" INTO sonuc;
	END IF;
	
	RETURN sonuc;
	
END$$

DELIMITER ;

Bir kere çalıştırdıktan sonra artık veritabanınızda saklanacaktır bu fonksiyon. SELECT işlemlerinde kullanırken ise şöyle kullanabilirsiniz;

SELECT user_name, timeAgo(user_date) as date FROM users

Örnek çıktı ise şöyle gözükür;

admin	        633 gün önce
Dgc'Blessed	    632 gün önce
wtf human	    630 gün önce
Umrtrm	        621 gün önce
tcelenkk	    621 gün önce
haisenberg	    618 gün önce
nazlı aaaaa	    618 gün önce
Bugraturemis	610 gün önce
erdem	        601 gün önce
melihfurkan96	601 gün önce
orkuncaylar	    600 gün önce
emredeger	    600 gün önce
beyzatrix	    600 gün önce
YusufBaba	    599 gün önce
murat	        598 gün önce
dizimek	        594 gün önce
tayfunerbilen
141 gün önce yazdı.
Önemli Başlıklar