|
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.
|