Menu
Coddy logo textTech

Obsługa dat — część 3

Część sekcji Podstawy ścieżki SQL w Coddy. Lekcja 33 z 72.

SQL udostępnia kilka przydatnych funkcji do manipulowania datami i ich formatowania. Oto kilka typowych funkcji daty:

  1. DATE() - Konwertuje ciąg znaków na datę
  2. STRFTIME() - Formatuje daty zgodnie z określonymi parametrami
  3. DATE('now') - Pobiera bieżącą datę:

Na przykład przekonwertuj ciąg znaków na datę:

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

SELECT DATE('now')
-- Zwraca bieżącą datę

Na przykład wyodrębnij rok, miesiąc i dzień z daty:

-- Pobierz rok
SELECT STRFTIME('%Y', '2023-05-15')
-- Zwraca: 2023

-- Pobierz miesiąc
SELECT STRFTIME('%m', '2023-05-15')
-- Zwraca: 05

-- Pobierz dzień
SELECT STRFTIME('%d', '2023-05-15')
-- Zwraca: 15

-- Wyświetl połączenie roku i dnia (można użyć dowolnego separatora)
SELECT STRFTIME('%Y:%d', '2023-05-15')
-- Zwraca: 2023:15

-- Użyj zamiast tego myślnika jako separatora
SELECT STRFTIME('%d-%m-%Y', '2023-05-15')
-- Zwraca: 15-05-2023

-- Pobierz dzień tygodnia
SELECT STRFTIME('%w', '2023-05-15')
-- Zwraca: 1 (poniedziałek; niedziela to 0)

Typowe specyfikatory formatu:

  • %Y: Rok (4 cyfry)
  • %m: Miesiąc (01–12)
  • %d: Dzień miesiąca (01–31)
  • %w: Dzień tygodnia (0–6, niedziela to 0)
  • %H: Godzina (00–23)
  • %M: Minuta (00–59)
  • %S: Sekunda (00–59)

Między specyfikatorami możesz użyć dowolnego znaku separatora (np. -, :, /). Na przykład STRFTIME('%d-%m-%Y', date) i STRFTIME('%d:%m:%Y', date) łączą dzień, miesiąc i rok, różniąc się jedynie separatorami.

Możesz łączyć te funkcje w zapytaniach:

-- Znajdź wszystkie rekordy z bieżącego roku
SELECT * FROM table1
WHERE STRFTIME('%Y', date_column) = STRFTIME('%Y', 'now')
challenge icon

Wyzwanie

Łatwy

Dostępne tabele i kolumny:

  • events: id, start, end

Napisz zapytanie, które wyświetla:

  • ID wydarzenia
  • Datę rozpoczęcia sformatowaną jako "DD-MM-YYYY". Nazwij tę kolumnę formatted_start
  • Datę zakończenia sformatowaną jako "DD-MM-YYYY". Nazwij tę kolumnę formatted_end
  • Czas trwania w dniach między rozpoczęciem a zakończeniem, zaokrąglony do najbliższej liczby całkowitej. Nazwij tę kolumnę duration_days

Odfiltruj tylko wiersze, w których rok w kolumnie start to 2009 (STRFTIME() zwraca ciąg znaków, a nie liczbę).

Posortuj wyniki według czasu trwania w dniach w kolejności malejącej.

Przypomnienie: Aby obliczyć różnicę między datami, użyj: JULIANDAY(end) - JULIANDAY(start), a do zaokrąglania do liczb całkowitych użyj ROUND().

Spróbuj swoich sił

quiz iconSprawdź się

Ta lekcja zawiera krótki quiz. Zacznij lekcję, żeby na niego odpowiedzieć i śledzić swoje postępy.

Wszystkie lekcje w sekcji Podstawy

Poćwicz samodzielnie: Edytor online SQL