PHP ile MySQL arasında tarih işlemleri

PHP ile MySQL arasında tarih işlemleri

MySQL veritabanı tarih değerlerini Amerikan tarih sistemine göre, yani YIL-AY-GÜN (2015-07-25) şeklinde tutar, fakat biz kullanıcılarımıza okunabilirlik açısından tarih bilgisini bu şekilde sunamayız.

Avrupa ve ülkemizdeki tarih formatı GÜN.AY.YIL (15.02.1976) şeklindedir. Veritabanından okuduğumuz bilgiyi ve veritabanına yazdığımız bilgiyi çevirmemiz ve kendi sistemimize göre düzenlememiz gerekmektedir.  


Örneğin aşağıdaki formatla bugünün tarihini GÜN.AY.YIL şeklinde alıyoruz. Burada d, day yani gün, m, month yani ay, Y year yani yıl için kısaltılmıştır. 
$BUGUN= date("d.m.Y");
echo $BUGUN;


1) Şimdi Veritabanından tarih bilgisini alalım ve kendi tarih formatımıza çevirip, ekrana yazalım.
 
$sonuc= mysql_query("SELECT `odemetarihi` FROM `musteritablosu`");

$satir= mysql_fetch_row($sonuc);

$tarih= date_create($satir[0]);

echo date_format($tarih, 'Y-m-d H:i:s');

#çıktı: 2015-07-25 14:25:32

echo date_format($tarih, 'd.m.Y H:i:s');
#çıktı: 25.07.2015 14:25:32




2) Şimdi kullanıcı formundan aldığımız Avrupa  sistemine göre olan tarih formatını aşağıdaki tek satırda çeviriyoruz. Örneğin 15.02.1976 olan tarih formatı 1976-02-25 şeklinde MySQL'in istediği Amerikan tarih formatına dönüştürülüyor. 

$GELISTAR = date_format(date_create($_POST['GELISTAR']), 'Y-m-d');

Burada Y ifadesi 4 haneli yılı, m ifadesi rakam olarak ay bilgisini, d ise gün bilgisini yazar ve aralara tire işareti konur. Bu bilgiyi artık INSERT veya DELETE komutuyla direkt olarak MySQL veritabanına gönderebiliriz. 

Eskiden aşağıdaki gibi 2 fonksiyon kullanarak dönüşümü yapıyordum, artık yukarıdaki şekilde kullanıyorum. Çünkü kullanıcının bilgisyarında ayarlanan tarih formatı 25.07.2015 değil de 25/07/2015 şeklinde ise aşağıdaki fonksiyonlar çalışmayacaktır. 

 
Aşağıdaki kullanımlar artık tercih edilmemektedir, sadece fonksiyon kullanımını göstermek amacıyla verilmiştir. 
// Formdaki bilgiyi vertitabanına gönderirken
function tarihformat($value)
{
if ($value!='')
 {
  $v_month= substr($value,3,2);
  $v_day= substr($value,0,2);
  $v_year= substr($value,6,4);
  $value=$v_year."-".$v_month."-".$v_day;
  }
return $value;
}

//MySQL Veritabanından alıp ekrana yazarken
function tarihyazformat($value)
{
if ($value!=''){ 
$v_year= substr($value,0,4);
$v_month= substr($value,5,2);
$v_day= substr($value,8,2);
$value=$v_day.".".$v_month.".".$v_year;
}
return $value;
}

Mutlu kodlamalar,
Oğuzhan TAŞ,
Temmuz 2015

Bookmark and Share