SQLite - Date & Time
Ciao a tutti, aspiranti programmatori! Oggi esploreremo il mondo affascinante delle date e delle ore in SQLite. Come il vostro amico insegnante di informatica del vicinato, vi guiderò in questo viaggio con molti esempi e spiegazioni. Allora, fate il favore di allacciarvi le cinture e iniziamo!
Stringhe di Tempo
In SQLite, le date e le ore sono tipicamente memorizzate come stringhe di testo. Questo potrebbe sembrare strano all'inizio, ma è in realtà molto flessibile e facile da utilizzare. Esaminiamo alcuni formati comuni:
Formato ISO8601
Il formato più comune è ISO8601, che ha questo aspetto:
YYYY-MM-DD HH:MM:SS
Per esempio:
'2023-06-15 14:30:00'
Questo rappresenta il 15 giugno 2023 alle 2:30 PM.
Altri Format Accettati
SQLite è molto indulgente quando si tratta di formati di data e ora. Ecco alcuni altri formati accettati:
YYYY-MM-DD
YYYY-MM-DD HH:MM
YYYY-MM-DD HH:MM:SS.SSS
YYYY-MM-DDTHH:MM
YYYY-MM-DDTHH:MM:SS
YYYY-MM-DDTHH:MM:SS.SSS
HH:MM
HH:MM:SS
HH:MM:SS.SSS
Proviamo un esempio:
CREATE TABLE events (
id INTEGER PRIMARY KEY,
event_name TEXT,
event_date TEXT
);
INSERT INTO events (event_name, event_date) VALUES
('Festa di Compleanno', '2023-07-01'),
('Serata al Cinema', '2023-07-15 20:00'),
('Corsa Mattutina', '06:30');
SELECT * FROM events;
Questo creerà una tabella con diversi formati di data e ora. Molto cool, vero?
Modificatori
Ora, parliamo dei modificatori. Questi sono speciali parole chiave che ci permettono di manipolare date e ore. Sono come bacchette magiche per le nostre stringhe di tempo!
Modificatori Comuni
Ecco una tabella dei modificatori comuni:
Modificatore | Descrizione |
---|---|
+N days |
Aggiunge N giorni alla data |
-N days |
Sottrae N giorni dalla data |
start of month |
Cambia la data al primo giorno del mese |
start of year |
Cambia la data al primo giorno dell'anno |
weekday N |
Cambia la data alla prossima data in cui il giorno della settimana è N (0=Domenica, 1=Lunedì, ecc.) |
Vediamo questi in azione:
SELECT
date('now') AS today,
date('now', '+1 day') AS tomorrow,
date('now', '-1 month') AS last_month,
date('now', 'start of month') AS month_start,
date('now', 'weekday 1') AS next_monday;
Questa query vi mostrerà la data di oggi, la data di domani, la data di un mese fa, l'inizio del mese corrente e la data del prossimo lunedì. Molto utile, vero?
Formatori
I formatori sono come gli stilisti del mondo delle date e delle ore. Ci aiutano a presentare le nostre date e ore in modi diversi.
Funzione strftime()
La principale funzione che utilizziamo per il formattaggio è strftime()
. Sta per "string format time". Ecco la sintassi di base:
strftime(format, time-string, modifiers...)
Esaminiamo alcuni specificatori di formato comuni:
Specificatore | Descrizione |
---|---|
%Y |
Anno (4 cifre) |
%m |
Mese (01-12) |
%d |
Giorno del mese (01-31) |
%H |
Ora (00-23) |
%M |
Minuto (00-59) |
%S |
Secondo (00-59) |
%w |
Giorno della settimana (0-6 con Domenica=0) |
Ora, mettiamo tutto insieme:
SELECT
strftime('%Y-%m-%d', 'now') AS date_only,
strftime('%H:%M', 'now') AS time_only,
strftime('%Y-%m-%d %H:%M:%S', 'now') AS date_time,
strftime('%w', 'now') AS day_of_week,
strftime('%Y-%m-%d', 'now', '+1 month') AS next_month;
Questa query vi mostrerà la data corrente, l'ora corrente, la data e l'ora corrente, il giorno della settimana (0-6) e la data di un mese da ora.
Un Esempio Divertente
Chiudiamo con un esempio divertente. Immagina di stanno pianificando una festa e vuoi sapere quale giorno della settimana sarà tra 100 giorni:
SELECT
strftime('%Y-%m-%d', 'now', '+100 days') AS party_date,
CASE cast(strftime('%w', 'now', '+100 days') AS INTEGER)
WHEN 0 THEN 'Domenica'
WHEN 1 THEN 'Lunedì'
WHEN 2 THEN 'Martedì'
WHEN 3 THEN 'Mercoledì'
WHEN 4 THEN 'Giovedì'
WHEN 5 THEN 'Venerdì'
WHEN 6 THEN 'Sabato'
END AS party_day;
Questa query vi dirà la data tra 100 giorni e il giorno della settimana. Perfetto per pianificare una festa!
E voilà, ragazzi! Abbiamo esplorato il territorio delle date e delle ore in SQLite. Ricorda, la pratica rende perfetti, quindi non abbiate paura di sperimentare con queste funzioni. Prima di sapere, sarete maghi delle date e delle ore! Buon coding!
Credits: Image by storyset