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!