Problém:
Chcete naformátovat sloupec datetime nebo hodnotu v SQLite.
Příklad:
Naše databáze má tabulku s názvem ticket
s údaji ve sloupcích passenger_ID
, train_number
a sale_datetime
.
passenger_ID | číslo_vlaku | sale_datetime |
---|---|---|
245NX | 4505 | 2019-10-17 12:56:30 |
127RG | 3403 | 2019-10-17 11:45:23 |
567FH | 4505 | 18. 10. 2019 12:40:32 |
230AP | 6700 | 18. 10. 2019 13:20:20 |
118BB | 3403 | 18. 10. 2019 13:13:13 |
Pro každý prodej jízdenek získáme ID cestujícího, číslo vlaku a datum a čas prodeje. Chceme formátovat datum prodeje tak, aby zobrazovalo den, měsíc a rok oddělené lomítky (/) s čárkou mezi rokem a časem. Chceme pouze hodinu a minutu prodeje.
Zde je dotaz, který byste napsali:
Řešení:
SELECT passenger_ID, train_number, STRFTIME('%d/%m/%Y, %H:%M', sale_datetime) AS sale_formatted_datetime FROM ticket;
Zde je výsledek dotazu:
passenger_ID | číslo_vlaku | 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 |
Diskuse:
Použijte STRFTIME()
funkce pro formátování dat date\time\datetime v SQLite. Tato funkce má dva argumenty. První argument je formátovací řetězec obsahující vzor části data/času. V našem příkladu používáme formátovací řetězec ‘%d/%m/%Y, %H:%M '. V tomto řetězci:
- %d je dvoumístný den.
- %m je dvoumístný měsíc.
- %Y je čtyřmístný rok.
- %H je dvoumístná hodina.
- %M je dvoumístná minuta.
Více specifikátorů data a času naleznete v dokumentaci SQLite.
Druhý argument je čas/datum/datum a čas, který se má formátovat. Může to být výraz vracející hodnotu čas/datum/datum a čas nebo název sloupce čas/datum/datum a čas. (V našem příkladu je to sloupec sale_datetime
.)
STRFTIME()
vrátí naformátované datum a čas. V našem příkladu formátované datum a čas neobsahují sekundy a části data jsou místo pomlček (-) odděleny lomítky (/).