Bir projede yapıyorsanız olmazsa olmaz veri tipi işlemleri tarih alanlarıdır. Örneğin ödeme gününe 2 ay sonrası için bir işlem yapmak gibi birçok Tarih Sorguları işlemleri projenizde uygulamanız gereken bir işlevdir.
Örneğimizde aşağıdaki ürün listesindeki tarih alanı ile ilgili birkaç örnek yapacağız.
Ocak Ayındaki tarihleri listeleyelim.
Oluştur – Sorgu Tasarımı – URUN_LISTESI tablosunu ekliyoruz. İstediğiniz alanları getirebilirsiniz. İçinde tarih olsun yeterli. Ben aşağıdaki şekilde ekledim.
Önce tarih alanından ay değerlerini çıkarmam gerekiyor. Bunun için en sağdaki boş kolona
Yazıyoruz. : işaretinden önceki AY kelimesi kolonun ismi. İçine Tarih kolonunu tam karakterleri ile yazıyoruz.
Böylece Sorgu gün, Ay, Yıl tarih alanından sadece ay alanını yeni kolona eklemiş oluyoruz.
Sorguyu çalıştırdığımızda ise en son kolonda Ay isminde kolon gelmiş oldu.
Bundan sonraki işlemimiz gayet kolay. Tekrar tasarım görünümüne geliyoruz. AY Ölçüt kısmına Ocak ayını yani 1 yazıyoruz.
Sorguyu çalıştırdığımızda sadece Ocak Aylarını listelemiş olduk.
Ürün tarihinden kaç gün geçtiğini hesaplayan Tarih Sorguları
Ürün tarihinden bugün itibariyle kaç gün geçtiğini hesaplayan bir sorgu yazalım.
Oluştur – Sorgu Tasarımı – Ürün Listesini ekliyoruz.
İstediğiniz alanları getirebilirsiniz.
Tarih kısmının yanındaki boş sorgu alanına
: işaretinden önceki kolonun ismidir.
Date() bugünün temsil eden Access’in hazır fonksiyonudur.
Tarih alanı da tablomuzdaki alandır.
Sorguyu çalıştırdığımızda kaç gün geçtiğini görmüş oluyoruz.
İki tarih arası Tarih Sorguları
Tarih alanında belirleyeceğimiz iki tarih arasında sorgulamak için
Oluştur – Sorgu Tasarımı – Ürün Listesini ekliyoruz. İstediğiniz kolonları getirin. Yalnız bırada 2 adet tarih alanı sorgu kısmına getiriniz. Tarih alanlarının Göster alanı biri seçili diğer seçili olmasın. (Yan Yana iki tarih görmek istemeyiz.) Görüntü aşağıdaki şekilde olacak.
Önemli : Tarih sorgulaması yaparken mutlaka başına ve sonuna # işareti koyulmalıdır. Örneğin =#01.01.2000# gibi
İlk tarih alanı başlangıç olsun. Bunun için ilk alana
İkinci tarih alanı da bitiş olsun. Bunun içim ikinci alana
Sorgudaki ölçüt kısmına yazdığımızda aşağıdaki şekilde olmalı.
Sorguyu çalıştırdığımızda belirlediğimiz tarih arasındaki veriler gelmiş olacaktır.
Between Kullanarak iki tarih arası sorgulama
İki tarih arası sorgulamayı tek kolonda yapmak içinde beetween özelliğini kullanırız. Diğer örnekten tek farkı aşağıdaki between ile başlayıp arasına and koymaktır. Yine # işareti ile tarih olduğunu belirtiyoruz.
Sorguyu çalıştırdığımızda aynı sonucu tekrar göreceksiniz.
DateDiff Formülü ile Örnekler
DateDiff formülü tarih işlemlerinde kullanılan en önemli formüllerden bir tanesidir. Bu formül hem excelde hem de Access’de aynı yöntemle kullanılabilmektedir.
DateDiff formülü örneğin vereceğiniz iki tarih arasında kaç ay olduğunu hesaplayabilen bir formüldür. Aynı şekilde kaç gün ve kaç yıl olduğunu da hesaplayabilirsiniz.
Örneğimiz için URUN_LISTESI tablosundaki TARİH alanı ile Bugünkü tarih arasında kaç gün, ay ve yıl kaldığınız hesaplayalım. Böylelikle Ürünlerin depoda kaç gün beklediğini öğrenmiş olacağız.
Datedif formünü açıklarken iki tarih arasında hesapladığını belirtmiştik. Ancak tablomuzda tek bir tarih alanı var. Diğer tarih alanı bugün olduğunu söylemiştik. İşte bugünün tarihini bulmak içinde date() şeklide bugünün tarihini hesaplayabileceğimiz formüldür.
İki tarihi tespit ettiğimize göre şimdi örneğimize geçebiliriz.
Oluştur – Sorgu Tasarımı – URUN_LISTESI seçiyoruz.
Sorgu alanına Ürün adı ve Tarih alanını ekliyoruz.
Şimdi Sağ kısma Tarih alanındaki veri ile bugün arasında kaç gün kaldığını hesaplayan formülü yazalım. Alan kısmına aşağıdaki şekilde yazıyoruz.
Datediff(“d” karakteri ile gün farkını bulmuş olduk. Şimdi de ay farkını bulmak için de m kullanarak aynı formülü uygulayalım.
Şimdide yıl hesaplaması yapmak için yyyy karakterini kullanacağız.
Datediff formülü ile bu iki tarih hesaplamalarında gün, ay yıl işlemini kolaylıkla yapabilirsiniz. Aynı işlemi excel de de yapabilirsiniz. Bu makale de Excel versiyonunu inceleyebilirsiniz.
Tarih ile İlgili Koşul Örnekleri
Date()
Güncel sistem tarihini gg/aa/yyyy şeklinde verir. Tarih içeren bir alanın Ölçüt: satırına yazılırsa güncel sistem tarihini içeren kayıtlar seçilir.
Now()
Güncel sistem tarihinin yanında güncel saati, dakikayı ve saniyeyi de verir. (dd/aa/yyyy saat:dakika:saniye)
>=Date()
Bugünün tarihinden sonraki ve bugünkü tarihleri içeren kayıtlar. (VADE adlı alanın Ölçüt: satırına yazılırsa vadesi bugünün tarihinden sonra ve bugün olanlar seçilir)
<=Date()
Bugünün tarihinden önceki ve bugünkü tarihleri içeren kayıtlar. (VADE adlı alanın Ölçüt: satırına yazılırsa vadesi bugünün tarihinden önce ve bugün olanlar seçilir)
<Date()-15
Bugünün tarihinden en az 15 gün daha eski tarihli kayıtlar seçilir. (VADE adlı alanın Ölçüt: satırına yazılırsa vadesi geçeli 15 günden daha fazla olmuş kayıtlar seçilir)
<Date()+15
Bugünün tarihinden itibaren 15 gün sonraki tarihten önceki tarihleri içeren kayıtlar. (VADE adlı alanın Ölçüt: satırına yazılırsa 15 gün sonrasına kadar vadesi gelen veya ödenmesi gereken seçilir)
Year([DogumTarihi]) = 1974
DogumTarihi alanında yılı 1974 olanlar. (YEAR(gg/aa/yyyy) fonksiyonu içine yazılan tarihin sadece yılını verir)
Year([DogumTarihi]) < 1974
DogumTarihi alanında yılı 1974’ten eski olanlar.
Year([DogumTarihi]) > 1974 DogumTarihi
alanında yılı 1974’ten büyük olanlar.
Year(Date())-Year([DogumTarihi])>18
Yıl hesabına göre yaşı 18’den büyük olanlar.
Month(gg/aa/yyyy)
İçine yazılan tarihin sadece ayını verir.
Day(gg/aa/yyyy)
İçine yazılan tarihin sadece gününü verir.
DatePart(“q”;[DogumTarihi])=4
Yılın son üç ayında (Ekim, Kasım, Aralık) doğanlar.
DatePart(“q”;[DogumTarihi])=2
Yılın ikinci üç ayında (Nisan, Mayıs, Haziran) doğanlar.
DatePart(“q”;[DogumTarihi])<4
Yılın son üç ayından önce (Ocak, Şubat, Mart, Nisan, Mayıs, Haziran, Temmuz, Ağustos, Eylül) doğanlar.
DatePart(“q”;[DogumTarihi])>2
Yılın ikinci üç ayından sonra (Temmuz, Ağustos, Eylül, Ekim, Kasım, Aralık) doğanlar.
DateSerial(Year ([VADE]), Month([VADE]),5)
Vadesi her ayın 5’inde olanlar. (VADE adlı alanın Ölçüt: satırına yazılır)
DateSerial(Year ([VADE]), 1,Day([Vade]))
Vadesi 1. ayda dolanlar (VADE adlı alanın Ölçüt: satırına yazılır)
DateSerial(2003;Month([Vade]);Day([Vade]))
Vadesi 2003 yılında dolanlar. (VADE adlı alanın Ölçüt: satırına yazılır)
DateSerial(Year([VADE]);Month([Vade])+1;1)-1
Vadesi her ayın sonu dolanlar. (VADE adlı alanın Ölçüt: satırına yazılır)
Year([VADE]) = Year(Now())
Vadesi içinde bulunulan yılda (güncel yılda) dolanlar.
Year([VADE]) = Year(Now()) And Month([VADE]) = Month(Now())
Vadesi içinde bulunulan yılda ve içinde bulunulan ayda (güncel ayda) dolanlar.
Year([VADE]) = Year(Now()) And Month([VADE]) = Month(Now()) And Day([VADE])=Day(Now())
Vadesi içinde bulunulan günde (güncel günde) dolanlar.
Eğitime Access Seçme Sorgusunda Kullanıcıdan Veri Alma #22 makaleden devam edin.