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.

Kopya kağıdı

SQL, tarihleri işlemek ve biçimlendirmek için birkaç yararlı fonksiyon sunar:

  • DATE() - Bir dizeyi tarihe dönüştürür
  • STRFTIME() - Tarihleri belirtilen parametrelere göre biçimlendirir
  • DATE('now') - Geçerli tarihi alır

Dizeyi tarihe dönüştürme:

SELECT DATE('2023-05-15 13:45:00')
-- Returns: 2023-05-15

SELECT DATE('now')
-- Returns current date

STRFTIME() kullanarak tarih bölümlerini ayıklama:

-- Get year
SELECT STRFTIME('%Y', '2023-05-15')
-- Returns: 2023

-- Get month
SELECT STRFTIME('%m', '2023-05-15')
-- Returns: 05

-- Get day
SELECT STRFTIME('%d', '2023-05-15')
-- Returns: 15

-- Show combination of year and day
SELECT STRFTIME('%Y:%d', '2023-05-15')
-- Returns: 2023:15

Yaygın biçim belirleyicileri:

  • %Y: Yıl (4 haneli)
  • %m: Ay (01-12)
  • %d: Ayın günü (01-31)
  • %H: Saat (00-23)
  • %M: Dakika (00-59)
  • %S: Saniye (00-59)

WHERE yan tümcelerinde kullanım:

-- Find all records from current year
SELECT * FROM table1
WHERE STRFTIME('%Y', date_column) = STRFTIME('%Y', 'now')

JULIANDAY() kullanarak tarih farklarını hesaplama:

JULIANDAY(end_date) - JULIANDAY(start_date)

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