Problema:
Vuoi formattare una colonna o un valore datetime in SQLite.
Esempio:
Il nostro database ha una tabella denominata ticket
con i dati nelle colonne passenger_ID
, train_number
e sale_datetime
.
ID_passeggero | numero_treno | sale_datetime |
---|---|---|
245NX | 4505 | 17-10-2019 12:56:30 |
127RG | 3403 | 17-10-2019 11:45:23 |
567FH | 4505 | 2019-10-18 12:40:32 |
230AP | 6700 | 2019-10-18 13:20:20 |
118BB | 3403 | 2019-10-18 13:13:13 |
Per ogni vendita di biglietti, otteniamo l'ID del passeggero, il numero del treno e la data e l'ora di vendita. Vogliamo formattare la data di vendita per mostrare il giorno, il mese e l'anno separati da barre (/), con una virgola tra l'anno e l'ora. Vogliamo solo l'ora e il minuto della vendita.
Ecco la domanda che scriveresti:
Soluzione:
SELECT passenger_ID, train_number, STRFTIME('%d/%m/%Y, %H:%M', sale_datetime) AS sale_formatted_datetime FROM ticket;
Ecco il risultato della query:
ID_passeggero | numero_treno | sale_formatted_datetime |
---|---|---|
245NX | 4505 | 17/10/2019, 12:56 |
127RG | 3403 | 17/10/2019, 11:45 |
567FH | 4505 | 18/10/2019, 12:40 |
230AP | 6700 | 18/10/2019, 13:20 |
118BB | 3403 | 18/10/2019, 13:13 |
Discussione:
Usa STRFTIME()
funzione per formattare i dati di data\ora\dataora in SQLite. Questa funzione accetta due argomenti. Il primo argomento è una stringa di formato contenente il modello della parte data/ora. Nel nostro esempio, utilizziamo la stringa di formato "%d/%m/%Y, %H:%M '. In questa stringa:
- %d è un giorno a due cifre.
- %m è un mese a due cifre.
- %Y è un anno a quattro cifre.
- %H è un'ora a due cifre.
- %M è un minuto a due cifre.
Puoi trovare più specificatori di data e ora nella documentazione di SQLite.
Il secondo argomento è il valore di ora/data/data/ora da formattare. Può essere un'espressione che restituisce un valore di ora/data/data/ora o il nome di una colonna ora/data/data/ora. (Nel nostro esempio, è la colonna sale_datetime
.)
STRFTIME()
restituisce la data e l'ora formattate. Nel nostro esempio, la data e l'ora formattate non contengono secondi e le parti della data sono separate da barre (/) anziché da trattini (-).