Проблем:
Искате да форматирате колона за дата и час или стойност в SQLite.
Пример:
Нашата база данни има таблица с име ticket
с данни в колоните passenger_ID
, train_number
и sale_datetime
.
passenger_ID | номер_влак | 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 | 18.10.2019 13:20:20 |
118BB | 3403 | 18.10.2019 13:13:13 |
За всяка продажба на билети нека вземем идентификационния номер на пътника, номера на влака и датата и часа на продажба. Искаме да форматираме датата на продажба, така че да показва деня, месеца и годината, разделени с наклонени черти (/), със запетая между годината и часа. Искаме само час и минута на разпродажбата.
Ето заявката, която бихте написали:
Решение:
SELECT passenger_ID, train_number, STRFTIME('%d/%m/%Y, %H:%M', sale_datetime) AS sale_formatted_datetime FROM ticket;
Ето резултата от заявката:
passenger_ID | номер_влак | 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 ч. |
Дискусия:
Използвайте STRFTIME()
функция за форматиране на данни за дата\час\datetime в SQLite. Тази функция приема два аргумента. Първият аргумент е форматен низ, съдържащ модела на част от дата/час. В нашия пример използваме низа за формат „%d/%m/%Y, %H:%M '. В този низ:
- %d е двуцифрен ден.
- %m е двуцифрен месец.
- %Y е четирицифрена година.
- %H е двуцифрен час.
- %M е двуцифрена минута.
Можете да намерите още спецификатори за дата и час в документацията на SQLite.
Вторият аргумент е стойността на час/дата/дата и час за форматиране. Това може да бъде израз, връщащ стойност на час/дата/дата и час или името на колона час/дата/дата и час. (В нашия пример това е колоната sale_datetime
.)
STRFTIME()
връща форматираната дата и час. В нашия пример форматираната дата и час не съдържат секунди и частите от датата са разделени с наклонени черти (/) вместо тирета (-).