MySQL Tarihlerle Çalışmak
MySQL Tarihleri
Tarihlerle çalışırken en zor kısım, eklemeye çalıştığınız tarihin biçiminin veritabanındaki tarih sütununun biçimiyle eşleştiğinden emin olmaktır.
Verileriniz yalnızca tarih bölümünü içerdiği sürece, sorgularınız beklendiği gibi çalışacaktır. Ancak işin içine bir zaman dilimi girerse, durum daha karmaşık hale gelir.
MySQL Tarih Veri Türleri
MySQL, veritabanında bir tarih veya tarih/saat değeri depolamak için aşağıdaki veri türleri ile birlikte gelir:
-
DATE
- YYYY-AA-GG biçimi -
DATETIME
- biçim: YYYY-AA-GG SS:MI:SS TIMESTAMP
- biçim: YYYY-AA-GG SS:MI:SS-
YEAR
- YYYY veya YY biçimi
Not: Veritabanınızda yeni bir tablo oluşturduğunuzda, tarih veri türü bir sütun için ayarlanır!
Tarihlerle Çalışmak
Aşağıdaki tabloya bakın:
Sipariş Tablosu
OrderId | ProductName | OrderDate |
---|---|---|
1 | Geitost | 2008-11-11 |
2 | Camembert Pierrot | 2008-11-09 |
3 | Mozzarella di Giovanni | 2008-11-11 |
4 | Mascarpone Fabioli | 2008-10-29 |
Şimdi yukarıdaki tablodan OrderDate'i "2008-11-11" olan kayıtları seçmek istiyoruz.
Aşağıdaki SELECT
ifadeyi kullanıyoruz:
SELECT * FROM Orders WHERE OrderDate='2008-11-11'
Sonuç kümesi şöyle görünecektir:
OrderId | ProductName | OrderDate |
---|---|---|
1 | Geitost | 2008-11-11 |
3 | Mozzarella di Giovanni | 2008-11-11 |
Not: Herhangi bir zaman bileşeni yoksa, iki tarih kolayca karşılaştırılabilir!
Şimdi, "Siparişler" tablosunun şöyle göründüğünü varsayalım ("Sipariş Tarihi" sütununda eklenen zaman bileşenine dikkat edin):
OrderId | ProductName | OrderDate |
---|---|---|
1 | Geitost | 2008-11-11 13:23:44 |
2 | Camembert Pierrot | 2008-11-09 15:45:21 |
3 | Mozzarella di Giovanni | 2008-11-11 11:12:01 |
4 | Mascarpone Fabioli | 2008-10-29 14:56:59 |
Yukarıdakiyle aynı SELECT
ifadeyi kullanırsak:
SELECT * FROM Orders WHERE OrderDate='2008-11-11'
sonuç alamayacağız! Bunun nedeni, sorgunun yalnızca zaman bölümü olmayan tarihleri aramasıdır.
İpucu: Sorgularınızı basit ve bakımı kolay tutmak için, gerekmedikçe tarihlerinizde zaman bileşenlerini kullanmayın!