7 Aralık 2011 Çarşamba

MySQL Kısa Tarih Formatı

Hem veri boyutunun azlığı, indexlenmesinin kolay oluşu, hem de sorgulamaların basitliği açısından öteden beri tarihleri zaman damgası olarak saklamayı tercih ederim.



Uzun zamandır MySQL ile haşır neşir olamıyordum. Medya sektöründen sonra geçiş yaptığım firma ağırlıklı olarak Microsoft ürünleri kullanıyor. Bu hızlı geçiş, ilk başlarda beni sudan çıkmış balığa döndürse de sonraları yavaş yavaş MSSQL 'de de belirli bir yetkinlik kazandık.
Hem veri boyutunun azlığı, indexlenmesinin kolay oluşu, hem de sorgulamaların basitliği açısından öteden beri tarihleri zaman damgası olarak saklamayı tercih ederim.
(Bu meseleye bir başka yazıda uzun uzadıya değinmeyi planlıyorum. ) , gel gelelim bu zaman damgasından insanlar tarafından okunabilen :) tarih formatları ile gösterim yapmak, özellikle de gruplamalı sorgularda sıkıntı yaratıyor. Çünkü zaman damgası, dakika,saniye ve salise değerlerini de içinde barındırıyor. Böylelikle aynı gün içerisinde yapılmış olan girdileri, tarihe göre gruplamak oldukça zorlaşıyor. Çözümü elbette herkesin aklına gelebileceği gibi, dakika,saniye ve salise değerlerini barındırmayan bir kısa tarih ile bu değerleri gruplamak.. Peki ama nasıl?

Bunun için yazmış olduğum bir MySQL fonksiyonunu sizlerle paylaşmak istedim.
Örneğin, bu yazının yazıldığı tarih ve saatin timestamp değeri  1323296656 yani, 2011-12-08 00:24:16 peki bunu kısa bir tarih formatına fonksiyonumuz ile nasıl çevirebileceğiz?
Gayet basit:
select fn_shortdate(1323296656);



 2011-12-08

 Aşağıda da, fonksiyonun kodları yer almaktadır.

delimiter ;;
CREATE FUNCTION fn_shortdate(ts INT)
RETURNS varchar(10)
BEGIN
RETURN DATE_FORMAT(FROM_UNIXTIME(ts),'%Y-%m-%d');

END; 
;;
Kolaylıklar dilerim.

Hiç yorum yok: