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.