Aşağıdaki sorguyu çalıştırdığınızda sonucun 3 olmasını beklerken 1 olarak aldığınızda bunun bir hata (bug) olduğunu düşünebilirsiniz:
Ancak bu bir BUG değildir.
Bir miktar daha ayrıntılı anlatayım. Siz SQL Server'dan zaman farkını dakika olarak göstermesini istediğinizde, saat, saniye, v.s. gibi geri kalan tüm alanları yok sayar. Bu durumda diğer tüm farkları göz ardı ettiğimizden sonucu 1 olarak bize yorumlar.
DATE_DIFF fonksiyonunun nasıl çalıştığını daha iyi anlamaya çalışalım:
SELECT DATEDIFF(YEAR,'2011-12-31 23:59:59 ' , '2012-01-01 00:00:00') AS YEAR_DIFF
Eğer saniyeler arasındaki farkı öğrenmek istiyorsanız, duruma biraz daha farklı yaklaşmanız gerekir. İlk örnekte yapmamız gereken doğru şey önce aradaki farkı saniye cinsinden bulmak ve sonucu 60'a bölerek dakikaya çevirmek olmalıydı.
SELECT DATEDIFF(second,'2011-10-14 02:18:58' , '2011-10-14 02:19:01')/60.0 AS MIN_DIFF
Böylece aradaki dakika farkını tam olarak bulmuş olduk.
Hiç yorum yok:
Yorum Gönder