Práce s daty

Data jsou v obchodě Pixel Shop texty ve tvaru 'RRRR-MM-DD'. Zvláštní typ pro data SQLite nemá, ale má funkce, které takovým textům rozumějí a umějí s nimi počítat.

strftime(format, datum) (z anglického „string format time“) napíše datum v jiném tvaru. Formát je text, ve kterém %Y znamená rok, %m měsíc a %d den; všechno ostatní se z něj opíše, jak je. Česky se datum píše s tečkami:

SELECT nazev, vydano,
       strftime('%Y', vydano) AS rok,
       strftime('%d.%m.%Y', vydano) AS ceske_datum
FROM hry
LIMIT 3;
nazevvydanorokceske_datum
Dragon Forge2024-03-14202414.03.2024
Pixel Racer2023-07-02202302.07.2023
Moon Farm2022-11-18202218.11.2022

Výsledek strftime je vždycky text, i když vypadá jako číslo: rok je '2024', ne 2024. Proč na tom záleží, uvidíte později v této lekci. Pozor na velká písmena ve formátu: %M není měsíc, ale minuty, a ty jsou u data bez času 00.

date(datum, posun) datum posune. Posun je anglický text jako '+7 days' (o 7 dní později), '-1 month' (o měsíc dřív) nebo '+1 year' (o rok později) a výsledek je zase datum v obvyklém tvaru:

SELECT date('2024-03-14', '+7 days') AS za_tyden,
       date('2024-03-14', '-1 month') AS pred_mesicem,
       date('2024-03-14', 'start of month') AS prvni_den;
za_tydenpred_mesicemprvni_den
2024-03-212024-02-142024-03-01

date ví, kolik dní má který měsíc, i o přestupných rocích: týden po 2024-02-25 je 2024-03-03. Můžete mu dát i několik posunů a provede je postupně: date(vydano, 'start of month', '+1 month', '-1 day') je poslední den měsíce, ve kterém hra vyšla. Jen na jedno pozor: měsíc po 31. lednu by byl 31. února, který neexistuje, a tak SQLite pokračuje do března: date('2024-01-31', '+1 month') je 2024-03-02.

Funkce pro data se obvykle píšou malými písmeny, tak jako v dokumentaci SQLite; fungují ale i velkými, stejně jako názvy ostatních funkcí. Zvláštní datum je 'now' (teď): date('now') je dnešní datum a date('now', '+30 days') datum za 30 dní. Skutečné aplikace ho používají pořád, tato cvičení ale ne, protože jeho výsledek se každý den mění.

Typická chyba: formát nebo posun bez apostrofů. strftime(%Y, vydano) skončí chybou near "%": syntax error. Formáty i posuny jsou texty, a tak patří do apostrofů.

Pokyny

Pro měsíční přehled prodejů ukažte ID a datum každé objednávky a její měsíc ve tvaru 2024-01 jako mesic. Objednávky seřaďte podle ID:

iddatummesic
12024-01-202024-01
22024-02-142024-02
32024-02-292024-02
………

Zákazníci mohou hru vrátit do 14 dnů. Pod tím ukažte ID a datum každé objednávky a poslední den pro vrácení, 14 dní po objednávce, jako vratit_do. Objednávky seřaďte podle ID:

iddatumvratit_do
12024-01-202024-02-03
22024-02-142024-02-28
32024-02-292024-03-14
………

Noví zákazníci dostanou na měsíc uvítací slevu. Pod tím ukažte jméno a datum registrace každého zákazníka a datum o měsíc pozdější jako sleva_do. Zákazníky seřaďte podle data registrace:

jmenoregistracesleva_do
Eva Novotná2023-01-152023-02-15
Jakub Dvořák2023-02-032023-03-03
Tereza Svobodová2023-04-212023-05-21
………

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/10