MySQL TimeStamp formatından DATE formatına çevrim

MySQL Veritabanı birçok tarih formatını destekler, daha önce veritabanında TimeStamp olarak ayarladığınız bir alanı DATE formatına çevirmek isteyebilirsiniz. Örneğin veritabanında birçok kayıt var, timestamp kullanıldığından tarih yanında saat ve dakika bilgisi de var. Siz veritabanından her bir günden bir tane örnek istiyorsunuz. 

MySQL'de tarih bilgisinin YIL-AY-GÜN olarak Amerikan sistemine göre kaydedildiğini hatırlayın. Yani bizde ve Avrupa tarih sisteminde ise GÜN.AY.YIL olarak kaydedilir.

2014-04-05 13:30:00  DiğerVeriler
2014-04-05 13:30:00  DiğerVeriler
2014-04-06 13:30:00  DiğerVeriler
2014-04-06 14:30:00  DiğerVeriler
2014-04-07 14:30:00  DiğerVeriler
2014-04-07 14:30:00  DiğerVeriler
2014-04-08 14:30:00  DiğerVeriler

Tarihler, 5,6,7 Nisan 2014'e ait, saat verisi de gördüğünüz gibi değişiyor. 

Şimdi elimizde böyle bir veri var ve biz her gün veri çekilip çekilmediğini sorgulamak istiyoruz. Ne yaparız? Tabi ki SELECT DISTINCT diyeceksiniz. Ama SQL DISTINCT tabloda tekrarlanan her veriden tek bir örnek döndürür. Örneğin 10 tane A, 20 Tane B varsa, SELECT DISTINCT ile bir A, bir B dönecektir.

SQL DISTINCT kullanmadan önce yukarıdaki TimeStamp türündeki veriyi aşağıdaki bilgileri kullanarak DATE formatına çevirmeliyiz.

mysql> SELECT DATE_FORMAT('2003-10-03',GET_FORMAT(DATE,'EUR'));
        -> '03.10.2003'

Sonra sorgulama yaparken aşağıdaki şekilde kullanırsak;

SELECT DISTINCT DATE_FORMAT(TARIH,GET_FORMAT(DATE,'EUR')) FROM `tabloadi`;

Bu sorguda TARIH isimli alandaki TimeStamp tipindeki veri aşağıdaki şekle dönüşecektir. Yani tablodaki her bir tarihten bir örnek alıp, Avrupa tarih sistemine çevirecek ve sonuç şöyle olacaktır.


05.04.2014
06.04.2014
07.04.2014

08.04.2014

tam da istediğimiz gibi oldu, her bir günden bir örnek çektik ve formatını ayarladık.

İyi çalışmalar...


REFERANSLAR
http://dev.mysql.com/doc/refman/5.5/en/date-and-time-functions.html
 
Bookmark and Share