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_DAYS
fonksiyonu kullanarak yapılan bu yöntemde, birthday
ve ş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. 🐬