SQL Notları: Tarih ve Saat İşlemleri

MySQL, tarih ve saat verileri üzerinde çeşitli işlemler yapmak için birçok fonksiyon sunar. Bu bölümde, MySQL’deki temel tarih ve saat işlemlerini ve bu işlemlerin nasıl kullanıldığını inceleyeceğiz.

### 1. **Tarih ve Saat Fonksiyonları**

– **`NOW()`:** Sunucunun mevcut tarih ve saatini döner.
 
 **Örnek Kullanım:**
 “`sql
 SELECT NOW(); — ‘2023-10-05 14:30:00’
 “`

– **`CURDATE()`:** Sunucunun mevcut tarihini döner (saat bilgisi olmadan).
 
 **Örnek Kullanım:**
 “`sql
 SELECT CURDATE(); — ‘2023-10-05’
 “`

– **`CURTIME()`:** Sunucunun mevcut saatini döner (tarih bilgisi olmadan).
 
 **Örnek Kullanım:**
 “`sql
 SELECT CURTIME(); — ’14:30:00′
 “`

### 2. **Tarih ve Saat Aritmetiği**

MySQL, tarih ve saat değerleri üzerinde aritmetik işlemler yapmak için `INTERVAL` ifadesini kullanır.

– **`NOW() + INTERVAL 1 DAY`:** Şuanki tarih ve saate 1 gün ekler.
 
 **Örnek Kullanım:**
 “`sql
 SELECT NOW() + INTERVAL 1 DAY; — ‘2023-10-06 14:30:00’
 “`

– **`CURDATE() – INTERVAL 4 DAY`:** Şuanki tarihten 4 gün çıkarır.
 
 **Örnek Kullanım:**
 “`sql
 SELECT CURDATE() – INTERVAL 4 DAY; — ‘2023-10-01’
 “`

### 3. **Tarih ve Saat Farkı Hesaplama: `TIMESTAMPDIFF()`**

– **`TIMESTAMPDIFF(unit, start_date, end_date)`:** İki tarih arasındaki farkı belirtilen birimde (örneğin, gün, saat, dakika) hesaplar.
 
 **Örnek Kullanım:**
 “`sql
 SELECT TIMESTAMPDIFF(MINUTE, ‘2023-10-05 14:00:00’, ‘2023-10-05 14:30:00’); — 30
 “`

### 4. **Tarih ve Saat Aralığı Sorgulama**

Tarih ve saat aralığı sorgularken `BETWEEN` kullanmak yerine, aşağıdaki gibi bir yöntem daha güvenilirdir:

**Örnek Kullanım:**
“`sql
WHERE x >= ‘2016-09-01’
AND x < ‘2016-09-01’ + INTERVAL 1 DAY;
“`

Bu sorgu, `x` sütunundaki değerlerin 1 Eylül 2016 tarihinde olduğunu kontrol eder. `BETWEEN` kullanmak, son tarihi de dahil edeceğinden bu yöntem daha doğrudur.

### 5. **Tarih ve Saat Formatlama: `DATE_FORMAT()`**

– **`DATE_FORMAT(date, format)`:** Tarih ve saat değerlerini belirtilen formatta döner.
 
 **Örnek Kullanım:**
 “`sql
 SELECT DATE_FORMAT(NOW(), ‘%Y-%m-%d %H:%i:%s’); — ‘2023-10-05 14:30:00’
 “`

### 6. **Tarih ve Saat Çıkarma: `DATE()` ve `TIME()`**

– **`DATE(datetime)`:** Tarih ve saat değerinden sadece tarih kısmını çıkarır.
 
 **Örnek Kullanım:**
 “`sql
 SELECT DATE(‘2023-10-05 14:30:00’); — ‘2023-10-05’
 “`

– **`TIME(datetime)`:** Tarih ve saat değerinden sadece saat kısmını çıkarır.
 
 **Örnek Kullanım:**
 “`sql
 SELECT TIME(‘2023-10-05 14:30:00′); — ’14:30:00’
 “`

### 7. **Zaman Dilimi İşlemleri**

MySQL, zaman dilimi işlemleri için `CONVERT_TZ()` fonksiyonunu sunar. Bu fonksiyon, bir tarih ve saat değerini bir zaman diliminden başka bir zaman dilimine dönüştürür.

**Örnek Kullanım:**
“`sql
SELECT CONVERT_TZ(‘2023-10-05 14:30:00’, ‘+00:00’, ‘+03:00’); — ‘2023-10-05 17:30:00’
“`

Bu sorgu, UTC zaman dilimindeki bir tarih ve saat değerini Türkiye saat dilimine (UTC+3) dönüştürür.

### 8. **Zaman Dilimi Ayarları**

MySQL sunucusunun zaman dilimi ayarlarını öğrenmek için aşağıdaki sorguyu kullanabilirsiniz:

**Örnek Kullanım:**
“`sql
SELECT @@time_zone; — ‘SYSTEM’ veya belirli bir zaman dilimi
“`

Eğer zaman dilimi `SYSTEM` olarak ayarlıysa, MySQL sunucusu işletim sisteminin zaman dilimini kullanır.

Bu bilgilerle, MySQL’de tarih ve saat işlemlerini nasıl gerçekleştireceğinizi daha iyi anlayabilirsiniz. Bir sonraki yazıda, alt sorgular ve daha gelişmiş SQL konularına değineceğiz.