Problem:
Du vil formatere en datetime-kolonne eller -værdi i SQLite.
Eksempel:
Vores database har en tabel med navnet ticket
med data i kolonnerne passenger_ID
, train_number
, og sale_datetime
.
passager-ID | tog_nummer | sale_datetime |
---|---|---|
245NX | 4505 | 2019-10-17 12:56:30 |
127RG | 3403 | 2019-10-17 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 |
Lad os for hvert billetsalg få passager-id, tognummer og salgsdato og -tidspunkt. Vi ønsker at formatere salgsdatoen til at vise dagen, måneden og året adskilt af skråstreger (/) med et komma mellem år og tidspunkt. Vi ønsker kun timen og minuttet for salget.
Her er den forespørgsel, du ville skrive:
Løsning:
SELECT passenger_ID, train_number, STRFTIME('%d/%m/%Y, %H:%M', sale_datetime) AS sale_formatted_datetime FROM ticket;
Her er resultatet af forespørgslen:
passager-ID | tog_nummer | 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 |
Diskussion:
Brug STRFTIME()
funktion til at formatere dato\tid\datotidsdata i SQLite. Denne funktion tager to argumenter. Det første argument er en formatstreng, der indeholder dato/tid delmønsteret. I vores eksempel bruger vi formatstrengen "%d/%m/%Y, %H:%M '. I denne streng:
- %d er en tocifret dag.
- %m er en tocifret måned.
- %Y er et firecifret årstal.
- %H er en tocifret time.
- %M er et tocifret minut.
Du kan finde flere dato- og tidsangivelser i SQLite-dokumentationen.
Det andet argument er værdien for tid/dato/dato/klokkeslæt, der skal formateres. Dette kan være et udtryk, der returnerer en tid/dato/dato/klokkeslæt værdi eller navnet på en tid/dato/dato/klokkeslæt kolonne. (I vores eksempel er det kolonnen sale_datetime
.)
STRFTIME()
returnerer den formaterede dato og tid. I vores eksempel indeholder den formaterede dato og klokkeslæt ikke sekunder, og datodelene er adskilt af skråstreger (/) i stedet for bindestreger (-).