MySQL’de Tarihleri Yaşa Çevirme Yöntemleri

alperenkr
Moneo
Published in
2 min readMar 15, 2024

MySQL’de tarihleri yaşa çevirmek için kullanabileceğiniz farklı yöntemler vardır. Bu yazıda, MySQL’de tarihleri gün ve ay değerlerini de dikkate alarak yaşa çevirmenin çeşitli yollarını inceleyeceğiz.

Yaş bilgisi, her gün değişen bir veri olduğu için tarih bazlı bir kolon, yaşın her an doğru ve güncel bir şekilde hesaplanmasını sağlayarak daha esnek bir çözüm sunar.

🔹 TIMESTAMPDIFF

İnceleyeceğimiz yöntemler arasında, tarih farkını hassas bir şekilde hesaplamakta ve genellikle kullanım kolaylığı ve doğruluk açısından tercih edebileceğiniz en iyi yöntemdir.

SELECT
TIMESTAMPDIFF(YEAR, birthday, NOW()) AS age
FROM customers;

Bu sorguda TIMESTAMPDIFF fonksiyonu, iki tarih arasındaki farkı belirli bir birimde hesaplamamıza olanak tanır. İlk parametre de farkı hangi birimde hesaplayacağımızı belirtiyoruz (burada yıl). İkinci parametre de hangi kolon için hesap yapacağımızı ve son olarak da hangi tarihten çıkaracağımızı belirterek aradaki yıl farkını bulmuş oluyoruz bu sayede kişinin yaşını elde ediyoruz.

🔹DATEDIFF

Bu yöntemde, elde edilen gün sayısını 365'e bölmek bazı durumlarda yanıltıcı olabilir çünkü her yıl 365 gün değildir.Bu nedenle, bu basit bölme işlemiyle elde edilen yaş bilgisi, gerçek yaş ile tam olarak uyuşmayabilir. Bu durumu göz önünde bulundurarak, bu yöntemi kullanırken dikkatli olunmalıdır.

SELECT 
FLOOR(DATEDIFF(NOW(), birthday)/365) AS age
FROM customers;

DATEDIFF fonksiyonu, iki tarih arasındaki gün farkını sağlar. Elde edilen gün farkı daha sonra 365'e bölünerek yıla çevrilir. FLOOR fonksiyonu kullanılarak ondalık kısmı atılır ve kişinin yaş bilgisi elde edilmiş olur.

🔹 TO_DAYS

Bu yöntemde de bir önceki örnekteki gibi 365'e bölmek bazı durumlarda yanıltıcı olabilir.

SELECT 
FLOOR((TO_DAYS(NOW()) - TO_DAYS(birthday)) / 365) AS age
FROM customers;

TO_DAYSfonksiyonu kullanarak yapılan bu yöntemde, birthdayve şu anki tarih yani NOW()arasındaki gün farkı hesaplanır. Ardından bu fark, 365'e bölünerek yaşa çevrilir.

🔹 DATE_FORMAT ve FROM_DAYS

Bu karmaşık yöntemde, yaş bilgisini elde etmek için kullanılabilir ama diğer yöntemlere göre daha fazla adım içermektedir. Önceki yöntemde kullanılan 365'e bölme işleminden farklı olarak, bu yöntem daha doğru bir sonuç sağlayabilir,

SELECT 
DATE_FORMAT(FROM_DAYS(DATEDIFF(now(), birthday)), '%Y')+0 AS age
FROM customers;

Bu sorguda DATEDIFF ile bulunan gün farkı, FROM_DAYS ile bir güne çevrilir ve ardından DATE_FORMAT fonksiyonu ile yıl formatına dönüştürülür. Sonuç olarak kişinin yaş bilgisi elde edilir.

Örneğin bugünün tarihini 13 mart olarak düşünürsek tüm bu yöntemlerin çıktısı şu şekilde gözükecektir.

Bu yazıda, MySQL’de tarihleri ay ve gün değerlerini de dikkate alarak yaşa çevirmek için kullanılabilecek çeşitli yöntemleri inceledik. Hangi yöntemin sizin durumunuza daha uygun olduğunu belirlemek için her birini kendi tablonuz üzerinden test edebilirsiniz. Bu yöntemler dışında kullandığınız yöntemleri yorumlarda belirtebilirsiniz. 🐬

--

--