Mysql ile gelecek tarih işlemleri

Tarih: 03 Şubat 2013 Kategori: Mysql 3 Yorum

mysql-dateMysql’de tarih işlemleri için birçok kullanışlı fonksiyon bulunur. Adddate() ve curdate() fonksiyonları kullanışlı tarih fonksiyonlarındandır. Addate() fonksiyonu belirtilen tarihe belirli bir zaman ekler ve gelecek tarihi döndürür. Curdate() fonksiyonu ise şu anki tarihi “yıl-ay-gün” ya da “yılaygün” formatında döndürür. Curdate() fonksiyonu parametre almaz. Addate() fonksiyonu iki parametre alır ve iki şekilde çağrılabilir.

ADDDATE(tarih,INTERVAL ifade birim),  ADDDATE(tarih,ifade)

Tarih: başlangıç için tarih değeri, Date veya Datetime tipinde olmalıdır.

Interval: tarih aralığını belirtmek için anahtar sözcük.

İfade: bir tarih ya da sayı olmalıdır.

Birim: bir zaman birimi olmalıdır. Kullanılabilecek zaman birimlerinin listesi aşağıda verilmiştir.

Fonksiyonun ikinci çağırma şekli Mysql kılavuzunda ve diğer kaynaklarda:

ADDDATE(ifade,tarih)

Olarak belirtilmiştir. Fakat kullanımı tarih, ifade şeklindedir. Bu yüzden ilk gösterdiğim ikinci çağırma şekli tarih, ifade şeklinde yazılmıştır. Basit bir örnek vererek fonksiyonun kullanımına bakalım.

select adddate('2012-01-15', interval 1 day);

Yukarıdaki sorguyu çalıştırdığınızda “2012-01-16” şeklinde çıktı alırsınız. Verdiğimiz tarihe 1 gün ekler ve çıkan sonucu döndürür. Adddate() fonksiyonu için kullanılabilecek birçok zaman birimi vardır.

Zaman Birimi Çıktılanacak İfade Formatı
MICROSECOND Mikrosaniyeler
SECOND Saniyeler
MINUTE Dakikalar
HOUR Saatler
DAY Günler
WEEK Haftalar
MONTH Aylar
QUARTER Çeyrekler
YEAR Yıllar
SECOND_MICROSECOND Saniyeler.Mikrosaniyeler
MINUTE_MICROSECOND Dakikalar.Mikrosaniyeler
MINUTE_SECOND Dakikalar:Saniyeler
HOUR_MICROSECOND Saatler.Mikrosaniyeler
HOUR_SECOND Saatler:Dakikalar:Saniyeler
HOUR_MINUTE Saatler:Dakikalar
DAY_MICROSECOND Günler.Mikrosaniyeler
DAY_SECOND Günler Saatler:Dakikalar:Saniyeler
DAY_MINUTE Günler Saatler:Dakikalar
DAY_HOUR Günler Saatler
YEAR_MONTH Yıllar-Aylar

Eğer belirtilen tarihten 2 ay sonrasını elde etmek istiyorsak:

select adddate('2012-01-15', interval 2 MONTH);

İşimizi görecektir. Bu sorgu 2012-03-15 şeklinde çıktı verir.

Tarih, ifade şeklinde kullanımı

Bu şekilde kullanım belirtilen tarihe gün eklemektedir.

select adddate('2012-01-15',15);

Yukarıdaki sorgunun çıktısı 2012-01-30 şeklinde olacaktır.

Curdate() kullanımı

select adddate(curdate(), interval 10 day);

Yukarıdaki sql sorgusu bugünden 10 gün sonrasının tarihini verir. Eğer bugünün tarihini almak istiyorsanız select ile sadece curdate() kullanabilirsiniz.

Select curdate();

2012-01-15 şeklinde çıktı verecektir. Eğer:

Select curdate() + 0;

Şeklinde kullanırsanız aradaki tire işaretlerini silerek 20120115 şeklinde birleşik tarih çıktısı verir.

Son olarak şöyle bir örnek yapalım. Müşterilerimizden ödeme aldığımız bir e-ticaret sitemiz olsun. Ödeme bilgileri ödemeler tablosunda, ödemelerin tarihleri date tipi odemeTarih alanında tutuluyor olsun. Eğer müşterilerimize 5 gün sonraki ödemelerini göstermek istersek aşağıdaki sorguyla bunu yapabiliriz.

select odemeBilgi from odemeler where odemeTarih = adddate(curdate(), interval 5 day);

Bu sorgu eğer varsa 5 gün sonraki ödemelerin bilgilerini listeleyecektir.

3 Yorum

Yorum Yapın
  • ferit Cevapla

    harika bir anlatım olmuş ya en güzeli bir kodu yazdığınızda hemen karşısına şu kod bu anlama gelir bu işlemi yapar demeniz harika bir anlatım olmuş

    • altayalp Cevapla

      Yazılarımda yeterince açıklayıcı olmaya çalışıyorum. Yorumunuz için çok teşekkür ederim.