Probleem:
U wilt een datetime-kolom of -waarde opmaken in SQLite.
Voorbeeld:
Onze database heeft een tabel met de naam ticket
met gegevens in de kolommen passenger_ID
, train_number
, en sale_datetime
.
passenger_ID | treinnummer | 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 |
Laten we voor elke kaartverkoop de passagiers-ID, het treinnummer en de verkoopdatum en -tijd krijgen. We willen de verkoopdatum zo opmaken dat de dag, de maand en het jaar worden gescheiden door schuine strepen (/), met een komma tussen het jaar en de tijd. We willen alleen het uur en de minuut van de verkoop.
Dit is de vraag die u zou schrijven:
Oplossing:
SELECT passenger_ID, train_number, STRFTIME('%d/%m/%Y, %H:%M', sale_datetime) AS sale_formatted_datetime FROM ticket;
Dit is het resultaat van de zoekopdracht:
passenger_ID | treinnummer | 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 |
Discussie:
Gebruik de STRFTIME()
functie om data\time\datetime-gegevens op te maken in SQLite. Deze functie heeft twee argumenten. Het eerste argument is een opmaakstring die het datum/tijd-deelpatroon bevat. In ons voorbeeld gebruiken we de notatiereeks '%d/%m/%Y, %H:%M '. In deze string:
- %d is een tweecijferige dag.
- %m is een tweecijferige maand.
- %Y is een jaartal van vier cijfers.
- %H is een tweecijferig uur.
- %M is een minuut van twee cijfers.
U kunt meer datum- en tijdspecificaties vinden in de SQLite-documentatie.
Het tweede argument is de tijd/datum/datum/tijd-waarde die moet worden opgemaakt. Dit kan een expressie zijn die een tijd/datum/datum/tijd-waarde retourneert of de naam van een tijd/datum/datum/tijd-kolom. (In ons voorbeeld is dit de kolom sale_datetime
.)
STRFTIME()
geeft de opgemaakte datum en tijd terug. In ons voorbeeld bevatten de opgemaakte datum en tijd geen seconden en worden de datumdelen gescheiden door schuine strepen (/) in plaats van streepjes (-).