SQL Date Fonksiyonu
SQL Tarihi
Tarihle çalışırken, en zor görevlerden biri, eklenen tarihin formatının veritabanında tarih sütunlarının formatıyla uyumlu olduğundan emin olmaktır.
Veriler sadece tarih kısmını içeriyorsa, sorgu çalışmazsa sorun olmaz. Ancak, zaman içeriyorsa durum biraz karmaşık hale gelir.
Tarih sorgulama karmaşıklığı hakkında konuşmadan önce, en önemli yerleşik tarih işleme fonksiyonlarını inceleyelim.
MySQL Date Fonksiyonları
Aşağıdaki tablo, MySQL'de en önemli yerleşik tarih fonksiyonlarını içerir:
Fonksiyon | Açıklama |
---|---|
NOW() | Mevcut tarih ve zamanı döndürür |
CURDATE() | Mevcut tarihi döndürür |
CURTIME() | Mevcut zamanı döndürür |
DATE() | Tarih veya tarih/zaman ifadesinin tarih kısmını çıkarır |
EXTRACT() | Tarih/zaman'ın tek parçalarını döndürür |
DATE_ADD() | Tarihe belirli bir zaman aralığını ekler |
DATE_SUB() | Tarihten belirli bir zaman aralığını çıkarır |
DATEDIFF() | İki tarih arasındaki gün sayısını döndürür |
DATE_FORMAT() | Tarih/zaman'ı farklı formatlarda görüntüleme |
SQL Server Date Fonksiyonları
Aşağıdaki tablo, SQL Server'da en önemli yerleşik tarih fonksiyonlarını içerir:
Fonksiyon | Açıklama |
---|---|
GETDATE() | Mevcut tarih ve zamanı döndürür |
DATEPART() | Tarih/zaman'ın tek parçalarını döndürür |
DATEADD() | Tarihe belirli bir zaman aralığını ekler veya çıkarır |
DATEDIFF() | İki tarih arasındaki süreyi döndürür |
CONVERT() | Tarih/zaman'ı farklı formatlarda görüntüleme |
SQL Date veri türü
MySQL, veritabanında tarih veya tarih/zaman değerlerini saklamak için aşağıdaki veri türlerini kullanır:
- DATE - Format YYYY-MM-DD
- DATETIME - Format: YYYY-MM-DD HH:MM:SS
- TIMESTAMP - Format: YYYY-MM-DD HH:MM:SS
- YEAR - Format YYYY veya YY
SQL Server, veritabanında tarih veya tarih/zaman değerlerini saklamak için aşağıdaki veri türlerini kullanır:
- DATE - Format YYYY-MM-DD
- DATETIME - Format: YYYY-MM-DD HH:MM:SS
- SMALLDATETIME - Format: YYYY-MM-DD HH:MM:SS
- TIMESTAMP - Format: Tekil rakam
SQL Tarih İşleme
Zaman kısmı içerilmediği sürece, iki tarih kolayca karşılaştırılabilir!
Aşağıdaki "Orders" tablosunu varsayalım:
OrderId | ProductName | OrderDate |
---|---|---|
1 | computer | 2008-12-26 |
2 | printer | 2008-12-26 |
3 | electrograph | 2008-11-12 |
4 | telephone | 2008-10-19 |
Şimdi, "2008-12-26" olarak belirtilen OrderDate ile kayıtları tablodan seçmek istiyoruz.
Aşağıdaki SELECT cümlesini kullanıyoruz:
SELECT * FROM Orders WHERE OrderDate='2008-12-26'
Sonuç Koleksiyonu:
OrderId | ProductName | OrderDate |
---|---|---|
1 | computer | 2008-12-26 |
3 | electrograph | 2008-12-26 |
Şimdi "Orders" sınıfının şu şekilde olduğunu varsayalım (lütfen "OrderDate" sütunundaki zaman kısmına dikkat edin):
OrderId | ProductName | OrderDate |
---|---|---|
1 | computer | 2008-12-26 16:23:55 |
2 | printer | 2008-12-26 10:45:26 |
3 | electrograph | 2008-11-12 14:12:08 |
4 | telephone | 2008-10-19 12:56:10 |
Yukarıdaki SELECT cümlesini kullanırsak:
SELECT * FROM Orders WHERE OrderDate='2008-12-26'
Bu durumda sonuç alamayız. Bu, sorgunun zaman kısmını içermeyen bir tarih nedeniyle olmaktadır.
İpucu:Sorguyu basit ve daha kolay bakım için, tarihlerde zaman kısmını kullanmayın!