Menu
Coddy logo textTech

Handling Dates Part 3

Coddy'nin SQL Journey'sinin Temeller bölümünün bir parçası — ders 33 / 72.

SQL, tarihleri işlemek ve biçimlendirmek için birkaç yararlı fonksiyon sağlar. İşte bazı yaygın tarih fonksiyonları:

  1. DATE() - Bir dizeyi tarihe dönüştürür
  2. STRFTIME() - Tarihleri belirtilen parametrelere göre biçimlendirir
  3. DATE('now') - Mevcut tarihi alır:

Örneğin, dizeyi tarihe dönüştürme:

SELECT DATE('2023-05-15 13:45:00')
-- Şunu döndürür: 2023-05-15

SELECT DATE('now')
-- Mevcut tarihi döndürür

Örneğin tarihten yıl, ay ve günü çıkarın:

-- Yılı al
SELECT STRFTIME('%Y', '2023-05-15')
-- Sonuç: 2023

-- Ayı al
SELECT STRFTIME('%m', '2023-05-15')
-- Sonuç: 05

-- Günü al
SELECT STRFTIME('%d', '2023-05-15')
-- Sonuç: 15

-- Yıl ve gün kombinasyonunu göster (herhangi bir ayırıcı kullanılabilir)
SELECT STRFTIME('%Y:%d', '2023-05-15')
-- Sonuç: 2023:15

-- Bunun yerine tire ayırıcı kullanın
SELECT STRFTIME('%d-%m-%Y', '2023-05-15')
-- Sonuç: 15-05-2023

-- Haftanın gününü al
SELECT STRFTIME('%w', '2023-05-15')
-- Sonuç: 1 (Pazartesi; Pazar 0'dır)

Yaygın format belirleyiciler:

  • %Y: Yıl (4 basamaklı)
  • %m: Ay (01-12)
  • %d: Ayın günü (01-31)
  • %w: Haftanın günü (0-6, Pazar 0'dır)
  • %H: Saat (00-23)
  • %M: Dakika (00-59)
  • %S: Saniye (00-59)

Belirleyiciler arasında herhangi bir ayırıcı karakter kullanabilirsiniz (örneğin -, :, /). Örneğin, STRFTIME('%d-%m-%Y', date) ve STRFTIME('%d:%m:%Y', date) ifadelerinin her ikisi de gün, ay ve yılı birleştirir — sadece farklı ayırıcılarla.

Bu fonksiyonları sorgularda birleştirebilirsiniz:

-- Mevcut yıla ait tüm kayıtları bul
SELECT * FROM table1
WHERE STRFTIME('%Y', date_column) = STRFTIME('%Y', 'now')
challenge icon

Görev

Kolay

Mevcut tablolar ve sütunlar:

  • <strong>events</strong>: <strong>id</strong>, <strong>start</strong>, <strong>end</strong>

Şunları gösteren bir sorgu yazın:

  • Etkinlik ID'si
  • "DD-MM-YYYY" olarak formatlanmış başlangıç tarihi. Bu sütunu formatted_start olarak adlandırın
  • "DD-MM-YYYY" olarak formatlanmış bitiş tarihi. Bu sütunu formatted_end olarak adlandırın
  • Başlangıç ve bitiş arasındaki gün cinsinden süre, en yakın tam sayıya yuvarlanmış olarak. Bu sütunu duration_days olarak adlandırın

Yalnızca start sütununun yılının 2009 olduğu satırları filtreleyin (STRFTIME() bir sayı değil, bir dize döndürür).

Sonuçları süre günlerine göre azalan düzende sıralayın.

Hatırlatma: Tarihler arasındaki farkı hesaplamak için JULIANDAY(end) - JULIANDAY(start) kullanın ve tam sayılara yuvarlamak için ROUND() kullanın.

Kendin dene

quiz iconKendini test et

Bu ders kısa bir quiz içerir. Soruları yanıtlamak ve ilerlemeni kaydetmek için derse başla.

Temeller bölümündeki tüm dersler