Bu bölümde SQL'de zaman fonksiyonlarını nasıl kullanabileceğimize değineceğiz.
Öncelikle Sales.SalesOrderHeader tablomuzu açalım ve sorgulatalım.
İlk öğreneceğimiz fonksiyon, DATEFROMPARTS() fonksiyonudur.
Öncelikle tüm sorgu kodlarını silelim ve
SELECT DATEFROMPARTS(2023,4,1)yazalım. DATEFROMPARTS fonksiyonu bir tarihin yıl, ay ve günlerini bölümlemeye yarar. Bu örnekte 1 Nisan 2023'ü yazdırdık.
Şimdi aynı tablonun tüm sütunlarını tekrar sorgulatalım.
Altına
WHERE [OrderDate] < DATEFROMPARTS(2012,1,1)kodlarını yazalım. Burada yaptığımız 2012'den önceki tüm siparişleri listelemek. Görüldüğü üzere 31465 siparişin 1607'si 2012'den öncesine ait.
Eğer belirli bir tarih aralığındaki kayıtları bulmak isteseydik BETWEEN ifadesini kullanmalıydık.
WHERE [OrderDate] BETWEEN DATEFROMPARTS(2013,1,1)kodları ile 1 Ocak 2013 ve 31 Mart 2013 aralığındaki tüm sipariş kayıtlarını listeledik. Yani 2013'ün ilk çeyreğini bulduk.
AND DATEFROMPARTS(2013,3,31)
Belirli bir yılı bulmak için YEAR() fonskiyonunu kullanmaktayız.
Örnekte
WHERE YEAR(OrderDate) = 2014kriteri ile sadece 2014 yılına ait kayıtları listeledik.
İki tarih arasındaki farkı bulmak için DATEDIFF() fonksiyonunu kullanmaktayız. DIFF, difference (fark) kelimesinin kısaltmasıdır.
Diyelim ki sorgumuzda sadece [SalesOrderID], [Orderdate] ve [ShipDate] sütunlarını kullandık. Amacımız ShipDate ve OrderDate arasındaki farkı gün olarak bulmak. Yani siparişin verildiği tarih ile kargoya verildiği tarih arasındaki farkı.
Öncelikle [ElapsedDay] adlı yeni bir sütun oluşturuyoruz. DATEDIFF fonkisyonunun ilk parametresine DAY yazıyoruz. Böylece zaman farkı gün olarak listelenecek. Farkını almak istediğimiz sütunları ise diğer parametreler olarak yazıyoruz.
Sonuç olarak siparişin alındığı tarih ve kargo tarihi arasında 7 günlük zaman farkı olduğunu görebiliriz.
Bu bölümde SQL'de zaman fonksiyonlarına değindik. Bir sonraki bölümde ISNULL fonksiyonuna değineceğiz.