MySQL STR_TO_DATE Komutu

MySQL veritabanında DATE alan türünü kullanmadan, direkt CHAR alan türü içerisine 06.0.1.1984, 06/01/1984 v.b. formatlarda tarih girişleri yapmış olabilirsiniz. Peki bu girdileri MySQL tarafından, tarih formatında sorgulatmak nasıl olacak diyebilirsiniz. Sadece küçük bir fonksiyon ile 😉

MySQL STR_TO_DATE kullanımı

STR_TO_DATE fonksiyonu ile metin formatındaki tarih girişlerinin, MySQL tarafından yorumlanabilecek tarih türüne dönüştürebiliyoruz.

Fonksiyonu test edebilmeniz için bir örnek hazırladım.

Örnek veritabanı tablosu

Alttaki SQL sorgusunu oluşturacağınız veritabanı içerisinde çalıştırınız. Test tablomuz ve verilerimiz oluşturulacaktır.

[SQL]
CREATE TABLE IF NOT EXISTS `deneme` (
`ID` int(11) NOT NULL auto_increment,
`baslangic` varchar(50) NOT NULL,
`bitis` varchar(50) NOT NULL,
PRIMARY KEY (`ID`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=3 ;

INSERT INTO `deneme` (`ID`, `baslangic`, `bitis`) VALUES
(1, ’05/05/2009′, ’09/06/2009′),
(2, ’05/05/2009′, ’10/06/2009′);[/SQL]

Gördüğünüz üzere tarih girişleri 10/06/2009 formatında ve alanlar VARCHAR türünde.

Şimdi gelelim bunları okumaya ve işte örnek sorgumuz.

[SQL]SELECT ID, STR_TO_DATE(baslangic, ‘%d/%m/%Y’) as baslangic, STR_TO_DATE(bitis, ‘%d/%m/%Y’) as bitis FROM deneme;[/SQL]

Buradaki amaç standart dışı tarih formatındaki metni, doğru formatta parçalamak ve standart formata dönüştürmek. Böylece direkt MySQL sorgusu ile ay, yıl veya gün bilgilerini ayrı ayrı çekebilirsiniz.

Ve yukarıdaki sorgu ile alttaki sonucu elde ediyoruz.

[CODE]ID baslangic bitis
1 2009-05-05 2009-06-09
2 2009-05-05 2009-06-10[/CODE]