SQLite поддържа пет функции за работа с дати и часове. Това са:
date()time()datetime()julianday()strftime()
Всички тези функции приемат времеви низ като аргумент. Те също така приемат други аргументи за модифициране/форматиране на изхода.
strftime() функцията е най-универсалната функция от петте. Всъщност тази функция може да направи всичко, което другите четири могат.
С други думи, можете да използвате strftime() за всички ваши изисквания за форматиране на дата и час. Останалите четири функции са налични единствено за удобство.
Синтаксис
Синтаксисът на всяка функция е както следва:
date(timestring, modifier, modifier, ...)
time(timestring, modifier, modifier, ...)
datetime(timestring, modifier, modifier, ...)
julianday(timestring, modifier, modifier, ...)
strftime(format, timestring, modifier, modifier, ...) В първите четири функции първият аргумент е времеви низ, а всички последващи аргументи са модификатори.
В strftime() функция първият аргумент е низът за форматиране, последван от низа за време и всякакви модификатори.
Всички валидни времеви низове и модификатори са изброени в долната част на тази статия.
Но първо, нека разгледаме няколко бързи примера за всяка от тези функции.
Функцията date()
Можете да използвате date() функция с един аргумент или с множество аргументи.
Ето пример само с един аргумент:
SELECT date('now'); Резултат:
2020-04-23
Ето пример, който използва модификатор:
SELECT date('now', 'localtime'); Резултат:
2020-04-24
В този случай използвах localtime модификатор. Този модификатор предполага, че низът от време е в универсално координирано време (UTC) и настройва времевия низ, така че да показва местно време.
Функцията time()
time() функцията е подобна на date() функция, с изключение на това, че извежда часа вместо дата.
Ето един пример:
SELECT time('now'); Резултат:
00:02:05
И ето го с localtime модификатор:
SELECT time('now', 'localtime'); Резултат:
10:02:09
Функцията datetime()
SQLite datetime() функцията комбинира предишните две функции, в смисъл, че извежда и датата, и часа.
Ето един пример:
SELECT datetime('now'); Резултат:
"2020-04-24 00:04:13"
И ето го с localtime модификатор:
SELECT datetime('now', 'localtime'); Резултат:
"2020-04-24 10:04:46"
Функцията julianday()
julianday() функцията връща непрекъснатия брой дни от началото на юлианския период, който е понеделник, 1 януари 4713 г. пр. н. е., пролептичен юлиански календар (24 ноември 4714 г. пр. н. е., в пролептичния григориански календар).
Ето как изглежда с now като времеви низ:
SELECT julianday('now'); Резултат:
2458963.50964815
И тук се използва localtime модификатор:
SELECT julianday('now', 'localtime'); Резултат:
2458963.92637685
Функцията strftime()
Както споменахме, strftime() функцията може да се използва за извеждане на стойности за дата и час във всеки от форматите, налични в предишните функции.
Тази функция ви позволява да бъдете много конкретни с това как са форматирани вашите стойности за дата/час. Тя ви позволява да предоставите точния формат, в който искате да бъде представен.
Синтаксисът на тази функция е така:
strftime(format, timestring, modifier, modifier, ...)
Забележете, че първият аргумент е format . Тук предоставяте формата, в който искате да бъде изведен времевият низ.
Форматният низ за strftime() може да се състои от някоя от следните замествания:
| %d | Ден от месеца:00 |
| %f | Дробни секунди:SS.SSS |
| %H | Час:00-24 |
| %j | Ден от годината:001-366 |
| %J | Номер на юлиански ден |
| %m | Месец:01-12 |
| %M | Минута:00-59 |
| %s | Секунди от 1970-01-01 |
| %S | Секунди:00-59 |
| %w | Ден от седмицата 0-6 с неделя==0 |
| %W | Седмица от годината:00-53 |
| %Y | Година:0000-9999 |
| %% | % |
Ето един пример:
SELECT strftime('%Y-%m-%d %H:%M:%S', 'now'); Резултат:
"2020-04-24 00:43:51"
В този случай получаваме същия резултат като при използване на datetime() функция.
Ето го с localtime модификатор:
SELECT strftime('%Y-%m-%d %H:%M:%S', 'now', 'localtime'); Резултат:
"2020-04-24 10:45:27"
Отново същият резултат като при datetime() . Разликата е в strftime() ни позволява да посочим изрично формата на изхода.
Например:
SELECT strftime('%d/%m/%Y %H:%M:%S', 'now', 'localtime');
SELECT strftime('%m/%d/%Y (%H:%M:%S)', 'now', 'localtime');
SELECT strftime('%H:%M:%S on %d/%m/%Y', 'now', 'localtime'); Резултат:
"24/04/2020 10:49:41" "04/24/2020 (10:52:24)" "10:51:13 on 24/04/2020"
Валидни формати на низове за време
Аргументът на низа за време във всички функции за дата/час може да бъде предоставен във всеки от следните формати:
- ГГГГ-ММ-ДД
- ГГГГ-ММ-ДД ЧЧ:ММ
- ГГГГ-ММ-ДД ЧЧ:ММ:СС
- ГГГГ-ММ-ДД ЧЧ:ММ:СС.SSS
- ГГГГ-ММ-ДДТЧ:ММ
- ГГГГ-ММ-ДДТЧ:ММ:СС
- ГГГГ-ММ-ДДТЧ:ММ:СС.SSS
- ЧЧ:ММ
- ЧЧ:ММ:СС
- ЧЧ:ММ:СС.ССС
- сега
- DDDDDDDDDD
Валидни модификатори
Можете да използвате някой от следните модификатори с функции за дата/час:
- NNN дни
- NNN часа
- NNN минути
- NNN.NNNN секунди
- NNN месеца
- NNN години
- начало на месеца
- начало на годината
- начало на деня
- делен ден N
- unixepoch
- местно време
- utc
N се отнася до число, което се добавя към датата въз основа на посочената единица.
Например:
SELECT
date('now'),
date('now', '3 days'); Резултат:
date('now') date('now', '3 days')
----------- ---------------------
2020-04-24 2020-04-27
Ето един, който използва start of month като модификатор:
SELECT
date('now'),
date('now', 'start of month'); Резултат:
date('now') date('now', 'start of month')
----------- -----------------------------
2020-04-24 2020-04-01