Tarihlerle SQL Çalışması
SQL 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.
SQL Tarih Veri Tipleri
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
SQL Server , 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 -
SMALLDATETIME
- biçim: YYYY-AA-GG SS:MI:SS TIMESTAMP
- biçim: benzersiz bir sayı
Not: Veritabanınızda yeni bir tablo oluşturduğunuzda, bir sütun için tarih türleri seçilir!
Tarihlerle SQL Çalışması
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 "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!