Eğer Türkiye’de bir firmanın verileriyle işlem yapıyorsanız tarih alanında işlem yapmak istediğinizde veritabanında karşılaşacağınız sorunlardan birisi (dd/mm/yyyy) gün ay yıl şeklinde kaydedilmektedir fakat kullanılan hazır fonksiyonlar bizden (yyyy/mm/dd) formatında veri istemektedir.. Bu problemi çözmek için tarihleri (yyyy-mm-dd) formatına çevirmeliyiz.

 

Peki bunun için programlama dili mi kullanacağız ? Hayır. Sql’in gücünden yararlanacağız. Ama işimiz bununla bitmiyecek eğer biz tarihle bir sıralama işlemi gerçekleştirmek istersek ve bizim verimiz text formatında saklanmışsa onu da Timestamp formatına çevireceğiz. Bu sayede bir metrik kullanarak sıralama ve listeleme işlemimlerimizi gerçekleştirebiliriz.

Örneğin bizim elimizdeki veri tabanının tarih kolonunda “10/12/2017″ bu tipde bir veri var ve bunu”2017-12-10” a dönüştürmeliyiz (Çünkü daha sonra bir metrik oluşturacağız.)

Bunun için;

 

SELECT  (CONCAT(SUBSTRING_INDEX(tarih,"/",-1),'-', 
SUBSTRING_INDEX(SUBSTRING_INDEX(tarih,"/",-2),"/",1),'-',
SUBSTRING_INDEX(tarih,"/",1)  ) ) as yeni_tarih from veriler

komutu kullanılabilir

Peki nasıl bir metrik oluşturuldu ?

Unix Zaman Başlangıcından (1 Ocak 1970 00:00:00 GMT) itibaren geçen zamanı saniye cinsinden döndürür. Yani bu ifade bizim metriğimiz olacaktır. Bunun için yukarıda “yyyy-mm-dd” şekline dönüştürdüğümüz tarihi UNIX_TIMESTAMP fonksiyonunun içerisine alırsak unix time hesaplanacak ve bu sayede tarihe göre sıralama işlemleri gerçekleştirebileceğiz.

 

SELECT  UNIX_TIMESTAMP(CONCAT(SUBSTRING_INDEX(tarih,"/",-1),
'-', SUBSTRING_INDEX(SUBSTRING_INDEX(tarih,"/",-2),"/",1),'-'
,SUBSTRING_INDEX(tarih,"/",1)  ) ) as yeni_tarih from veriler
order by yeni_tarih desc

Bir Cevap Yazın

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir