czwartek,
MySQL: Rok przestępny
Prezentowane zapytanie jest zgodne z MySQL i MariaDB, ale nie jest uniwersalne dla innych popularnych systemów DBMS. Problematyczny fragment to SET @year = 2024
– typowy dla MySQL sposób ustawienia zmiennej lokalnej w sesji. W przypadku innych systemów należy używać odpowiednich mechanizmów i składni, które są dla nich przeznaczone.
W języku SQL można sprawdzić, czy dany rok jest przestępny, wykorzystując logikę, która definiuje lata przestępne. Rok jest przestępny, jeśli jest podzielny przez 4, ale nie jest podzielny przez 100, chyba że jest również podzielny przez 400. Pamiętaj, żeby dostosować zmienną @year
do swojego zapytania lub kontekstu, w którym chcesz sprawdzić rok.
Aby sprawdzić powyższe warunki, możesz użyć instrukcji CASE
. Poniżej znajduje się przykładowe zapytanie, które zwraca wartość True
jeśli podany rok (zmienna @year
) jest rokiem przestępnym, a False
w przeciwnym przypadku:
SET @year = 2024; -- Przykładowy rok, który chcesz sprawdzić
SELECT
CASE
WHEN (@year % 4 = 0 AND @year % 100 != 0) OR @year % 400 = 0 THEN 'True'
ELSE 'False'
END AS IsLeapYear;
W tym skrypcie:
@year % 4 = 0
sprawdza, czy rok jest podzielny przez 4.@year % 100 != 0
sprawdza, czy rok nie jest podzielny przez 100.@year % 400 = 0
sprawdza, czy rok jest podzielny przez 400.
Warunki są połączone logicznie tak, aby odzwierciedlać reguły określające lata przestępne. CASE
zwróci True
, jeśli rok spełnia kryteria roku przestępnego, w przeciwnym razie False
.