Zihni Özgürlük

Karakter dizilerindeki tarih ve zamanı parse etmek

Aşağıdaki gibi bir tarih stringimiz olsun, Örneğin MySQL datetime alanındaki veriler gibi.

‘2008-12-13 06:11:25′

Bunu Yıl, Ay, Gün, Saat, Dakika, Saniye şeklinde parse etmek isteyelim.

1
2
3
4
5
6
7
8
$tarih = "2008-12-13 06:11:25";
preg_match("/(\d{4})-(\d{2})-(\d{2}) (\d{2}):(\d{2}):(\d{2})/",$tarih,$diziTarih);
$yil = $diziTarih[1]; // 2008
$ay = $diziTarih[2];  // 12
$gun = $diziTarih[3]; //13
$saat = $diziTarih[4]; //06
$dakika = $diziTarih[5]; //11
$saniye = $diziTarih[6]; //25

preg_match işlevi düzenli ifade ile verilen eşleşmeyi bulduğu takdirde bunu $diziTarih dizisine doldurur.
$diziTarih[0] tüm eşleşmeyi verir yani ‘2008-12-13 06:11:25′ değerini.
Diğer bölümler 1 inci anahtardan başlayarak devam eder.

MySQL CONCAT Fonksiyonu

CONCAT(str1,str2,...)

MySql CONCAT fonksiyonu iki stringi birleştirir ve tek bir string yapar.

Çalışanlar tablosu aşağıdaki gibi olsun.

+-----+-----+--------+

| id  | adi |soyadi  |

+-----+-----+--------+

| 1   |Ali  |Kaya    |

| 2   |Veli |Soylu   |

| 3   |Esra |Güzel   |

+-----+-----+--------+

adi ve soyadı kolonlarını birleştirmek isteyelim:

mysql> SELECT CONCAT(adi,soyadi) AS adi_ve_soyad FROM calisanlar

+-----+----------+

| adi_ve_soyadi  |

+----------------+

|AliKaya         |

|VeliSoylu       |

|EsraGüzel       |

+----------------+

Inner join ve left join arasındaki farklar

inner join: birleştirme yapılan tablolardaki join koşuluna(ON) uyan satırları getirir.

left join: birleştirme yapılan tablolardan, soldaki tabloyu referans alarak, join koşuluna uymayan satırları da getirir.

Müşteriler tablosu aşağıdaki gibi olsun.

+-----+-----+------+

| musteri_id  | adi |

+-------------+-----+

| 123         |Ali  |

| 124 	      |Veli |

| 125 	      |Ayşe |

+-------------+-----+

Siparişler tablosu ise aşağıdaki gibi olsun.

+------------+------------+------+

| sipari_id  | musteri_id |tutar |

+------------+------------|------+

| 1 	      |123	  |100    |

| 2 	      |124	  |200    |

| 3	      |123	  |300    |

+------------+------------+------|

Inner join'e örnek: sipariş veren müşteriler

->SELECT m1.adi,s.tutar FROM musteriler AS m INNER JOIN siparisler AS s
		ON  m.musteri_id = s.musteri_id

+------+------------+

| adi  | tutar	    |

+------+------------+

| Ali  |100 	    |

| Vali |200	    |

| Ali  |300         |

+------+------------+

Left join'e örnek sipariş vermeyen müşteriler

->SELECT m1.adi,s.tutar FROM musteriler AS m LEFT JOIN siparisler AS s
		ON  m.musteri_id = s.musteri_id WHERE s.tutar is null

+------+------------+

| adi  | tutar	     |

+------+------------+

| Ayşe |NULL 	     |

+------+------------+

ADDDATE Fonksiyonu

ADDDATE(tarih,INTERVAL ifade birim)

Tarih hesaplamaları için kullanılır.

tarih paremetresi başlangıç değeridir. Date veya Datetime tipinde bir değer almalıdır.

İkince parametre ise iki bölümden oluşur;
her bir birim değeri için beklenen ifade değerleri aşağıdaki tabloda gösterilmiştir..

Birim değeri beklenen ifade değeri
MICROSECOND Mikrosaniyeler
SECOND Saniyeler
MINUTE Dakikalar
HOUR Saatler
DAY Günler
WEEK Haftalar
MONTH Aylar
QUARTER Çeyrekler
YEAR Yıllar
SECOND_MICROSECOND Saniyeler.Mikrosaniyeler
MINUTE_MICROSECOND Dakikalar.Mikrosaniyeler
MINUTE_SECOND Dakikalar:Saniyeler
HOUR_MICROSECOND Saatler.Mikrosaniyeler
HOUR_SECOND Saatler:Dakikalar:Saniyeler
HOUR_MINUTE Saatler:Dakikalar
DAY_MICROSECOND Günler.Mikrosaniyeler
DAY_SECOND Günler Saatler:Dakikalar:Saniyeler
DAY_MINUTE Günler Saatler:Dakikalar
DAY_HOUR Günler Saatler
YEAR_MONTH Yıllar-Aylar

Örnek

mysql> SELECT ADDDATE('2008-06-01', INTERVAL 31 DAY); -> '2008-07-02'

unsigned Nedir

Tüm integer tipler için kullanılabilir. Bir alan unsigned olarak işaretlendiğinde sadece pozitif değer alabilir.
Örneğin tinyint alan unsigned olarak işaretlendiğinde 0 ile 255 arasında bir değer alabilir. Normalde tinyint bir alan -128 ile 127 arasında bir değer alabilir.