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!

SQLite - Date & Time

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