Problem:
Du vill formatera en datetime-kolumn eller ett värde i SQLite.
Exempel:
Vår databas har en tabell som heter ticket
med data i kolumnerna passenger_ID
, train_number
och sale_datetime
.
passagerar-ID | tågnummer | 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 |
För varje biljettförsäljning, låt oss få passagerar-ID, tågnummer och försäljningsdatum och tid. Vi vill formatera försäljningsdatumet för att visa dag, månad och år separerade med snedstreck (/), med ett kommatecken mellan år och tid. Vi vill bara ha timmen och minuten för försäljningen.
Här är frågan du skulle skriva:
Lösning:
SELECT passenger_ID, train_number, STRFTIME('%d/%m/%Y, %H:%M', sale_datetime) AS sale_formatted_datetime FROM ticket;
Här är resultatet av frågan:
passagerar-ID | tågnummer | 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:
Använd STRFTIME()
funktion för att formatera datum\tid\datumtiddata i SQLite. Denna funktion tar två argument. Det första argumentet är en formatsträng som innehåller datum/tid delmönstret. I vårt exempel använder vi formatsträngen "%d/%m/%Y, %H:%M '. I denna sträng:
- %d är en tvåsiffrig dag.
- %m är en tvåsiffrig månad.
- %Y är ett fyrsiffrigt år.
- %H är en tvåsiffrig timme.
- %M är en tvåsiffrig minut.
Du kan hitta fler datum- och tidsspecifikationer i SQLite-dokumentationen.
Det andra argumentet är värdet för tid/datum/datumtid som ska formateras. Detta kan vara ett uttryck som returnerar ett värde för tid/datum/datumtid eller namnet på en kolumn tid/datum/datumtid. (I vårt exempel är det kolumnen sale_datetime
.)
STRFTIME()
returnerar formaterat datum och tid. I vårt exempel innehåller det formaterade datumet och tiden inte sekunder och datumdelarna är separerade med snedstreck (/) istället för bindestreck (-).