SQL Tarih Fonksiyonlarının Kullanımı
SQL Tarih Fonksiyonlarının Kullanımı
Veritabanları ile ilgili en çok sıkıntı yaşanan bölüm tarih alanlarının biçimi, sorgulanması, kayıt eklenmesi gibi durumlardır. Uzun süre yaptığınız kodlar çalışabilir. Ancak veritabanında meydana gelebilecek bir sürüm yükseltmesi veya veritabanı türü (SQL Server, MySQL vb.) değişikliği ciddi sorunlara yol açabilir.
MySQL Tarih Fonksiyonları
MySQL 'de en çok kullanılan ve en önemli tarih fonksiyonları şöyledir:
Fonksiyon Adı | Açıklaması | Örnek |
NOW() | O anki tarih ve saat bilgisini beraber verir | Create Table Personel (id int, Ad varchar(10), kayit_tar datetime Not Null DEFAULT NOW()) |
Bu yapıda yeni bir kayıt eklenirken kayit_tar alanına tarih ve saat otomatik eklenir. | ||
CURDATE() | O anki tarih verir | Create Table Personel (id int, Ad varchar(10), kayit_tar datetime Not Null DEFAULT CURDATE()) |
Bu yapıda yeni bir kayıt eklenirken kayit_tar alanına günün tarihi otomatik eklenir. | ||
CURTIME() | O anki saati verir | Create Table Personel (id int, Ad varchar(10), kayit_tar datetime Not Null DEFAULT CURTIME()) |
Bu yapıda yeni bir kayıt eklenirken kayit_tar alanına o anki saat otomatik eklenir. | ||
DATE() | Veritabanında tarih ve saat bilgisini tutan alandan tarihi seçip verir. | Select Adi, DATE(kayit_tar) From Personel |
Kayit_tar alanındaki tarih ve saat bilgisinden sadece tarih kısmını alır. | ||
EXTRACT() | İlgili alandaki tarih / saat verisinden istenilen bölümü alır. Alınabilecek bölümlerden bazıları: YEAR, MONTH, DAY, HOUR, MINUTE, QUARTER |
Select Adi, EXTRACT(MONTH from kayit_tar) From Personel |
Kayit_tar alanında ki verinin rakamsal olarak hangi aya ait olduğunu verir. | ||
DATE_ADD() | INTERVAL ile belirtilen değer ve parametre kadar ekleme yapar. Buradaki işlem veritabanında herhangi bir güncelleme işlemi yapmaz. Sadece sorgulama sonucunda elde edilen değere ekleme yapıp ekrana yazar. | Select Adi, DATE_ADD(kayit_tar, INTERVAL 30 DAY) AS tarih From Personel |
Bu örnekte kayıt tarihi üzerine 30 GÜN ekler. | ||
DATE_SUBTRACTS () | INTERVAL ile belirtilen değer ve parametre kadar çıkarma yapar. Buradaki işlem veritabanında herhangi bir güncelleme işlemi yapmaz. Sadece sorgulama sonucunda elde edilen değeden çıkarma yapıp ekrana yazar. | Select Adi, DATE_SUBTRACTS (kayit_tar, INTERVAL 30 DAY) AS tarih From Personel |
Bu örnekte kayıt tarihden 30 GÜN önceki tarihi verir. | ||
DATE_DIFF() | İki tarih arasındaki gün farkını verir. | SELECT DATEDIFF(ayrilma_tar,kayit_tar) AS calisma_gunu From Personel |
Bu örnekte personelin çalıştığı gün sayısını alabiliriz. Birinci tarihten ikincisi çıkarılır. Eğer ikinci tarih daha büyük ise negatif sonuç çıkar. |
MySQL Tablolarında tarih alanına kayıt biçimleri aşağıdaki gibidir
- DATE biçimi için kayıt formatı: YYYY-MM-DD
- DATETIME biçimi için kayıt formatı: YYYY-MM-DD HH:MI:SS
- TIMESTAMP biçimi için kayıt formatı: YYYY-MM-DD HH:MI:SS
- YEAR biçimi için kayıt formatı: YYYY veya YY
SQL Server Tarih Fonksiyonları
SQL Server 'da en çok kullanılan ve en önemli tarih fonksiyonları şöyledir:
Fonksiyon Adı | Açıklaması | Örnek |
GETDATE() | O anki tarih ve saat bilgisini beraber verir | Create Table Personel (id int, Ad varchar(10), kayit_tar datetime Not Null DEFAULT GETDATE()) |
Bu yapıda yeni bir kayıt eklenirken kayit_tar alanına tarih ve saat otomatik eklenir. | ||
DATEPART() | İlgili alandaki tarih / saat verisinden istenilen bölümü alır. Alınabilecek bölümlerden bazıları: yy(YEAR), mm(MONTH), dd(DAY), hh(HOUR), mi(MINUTE) |
Select Adi, DATEPART(yy, kayit_tar) From Personel |
Kayit_tar alanında ki verinin rakamsal olarak hangi yıla ait olduğunu verir. | ||
DATEADD() | Belirtilen değer ve parametre kadar ekleme yapar. Buradaki işlem veritabanında herhangi bir güncelleme işlemi yapmaz. Sadece sorgulama sonucunda elde edilen değere ekleme yapıp ekrana yazar. | Select Adi, DATE_ADD(day,30, kayit_tar) AS tarih From Personel |
Bu örnekte kayıt tarihi üzerine 30 GÜN ekler. | ||
DATEDIFF() | Belirtilen parametre kadar iki tarih arasındaki farkı verir. | SELECT DATEDIFF(month,ayrilma_tar,kayit_tar) AS calisilan_ay From Personel |
Bu örnekte personelin çalıştığı ay sayısını alabiliriz. Birinci tarihten ikincisi çıkarılır. Eğer ikinci tarih daha büyük ise negatif sonuç çıkar. |
SQL Server Tablolarında tarih alanına kayıt biçimleri aşağıdaki gibidir
- DATE biçimi için kayıt formatı: YYYY-MM-DD
- DATETIME biçimi için kayıt formatı: YYYY-MM-DD HH:MI:SS
- SMALLDATETIME biçimi için kayıt formatı: YYYY-MM-DD HH:MI:SS
- TIMESTAMP biçimi için kayıt formatı: Benzersiz bir numara ataması yapar.