Porovnávání dat

SQLite nemá pro datum zvláštní typ. Pixel Shop ukládá data jako text ve tvaru 'RRRR-MM-DD': rok, měsíc a den, s nulou před jednocifernými měsíci a dny. 14. března 2024 je '2024-03-14'. Tento tvar je mezinárodní norma (ISO 8601) a rozumí mu skoro každá databáze i programovací jazyk.

V podmínce napíšete datum jako každý jiný text, do apostrofů. Objednávky ze svatého Valentýna 2025:

SELECT id, zakaznik_id, datum
FROM objednavky
WHERE datum = '2025-02-14';
idzakaznik_iddatum
16112025-02-14

S datem fungují i ostatní porovnání, a to správně díky pořadí jeho částí. Text se porovnává od prvního znaku, takže nejdřív rozhodne rok, pak měsíc a nakonec den, přesně jak to u data má být. Viděli jste to v minulé lekci, když ORDER BY řadilo taková data od nejstaršího. Dřívější datum je menší, pozdější větší. Objednávky od prosince 2025:

SELECT id, datum
FROM objednavky
WHERE datum >= '2025-12-01'
ORDER BY datum;
iddatum
292025-12-12
302025-12-22

Celý rok najdete jako dny od 1. ledna toho roku (včetně) do 1. ledna roku dalšího (bez něj). Objednávky z roku 2024:

SELECT id, datum
FROM objednavky
WHERE datum >= '2024-01-01'
  AND datum < '2025-01-01'
ORDER BY datum;
iddatum
12024-01-20
22024-02-14
32024-02-29
……

Proč < '2025-01-01' a ne <= '2024-12-31'? S daty, jaká má obchod, funguje obojí. Některé sloupce ale obsahují i čas, třeba '2024-12-31 18:30', a ten text je větší než '2024-12-31', takže <= by silvestrovský večer vynechalo. „Menší než první den dalšího roku“ platí vždycky.

Řádky, které mají místo data NULL, třeba Robot Rebellion bez data vydání, nenajde žádná z těchto podmínek. Proč, se dozvíte v posledním cvičení této lekce.

Typická chyba: datum bez apostrofů. WHERE vydano > 2024-01-01 není chyba, ale SQLite přečte 2024-01-01 jako výpočet: 2024 minus 1 minus 1, tedy 2022. Dotaz pak najde hry vydané od roku 2022. Nepomůže ani datum napsané jinak, třeba po česku '14.3.2024' nebo '2024-3-14': porovná se jako text, znak po znaku, a výsledky jsou špatně, aniž by se objevila chyba.

Pokyny

Ukažte název a datum vydání her, které vyšly před rokem 2022, od nejstarší:

nazevvydano
Cube Logic2020-02-11
Castle Siege2021-05-20
Ocean Deep2021-08-30

Pod tím ukažte jméno a datum registrace (registrace) zákazníků, kteří se do obchodu zaregistrovali v roce 2024, seřazené podle data registrace:

jmenoregistrace
Tomáš Veselý2024-01-08
Klára Horáková2024-03-19
Matěj Němec2024-05-27
Natálie Marková2024-08-14
Vojtěch Pokorný2024-11-30

Začněte programovat zdarma

Registrací souhlasíte s provozními podmínkami a zásadami ochrany osobních údajů.

Nebo se registrujte pomocí:

7/12