SQLite strftime()
функцията ви позволява да върнете стойност за дата и час в определен формат.
Действителната върната стойност за дата/час се основава на низ от време, който предоставяте като аргумент, когато извиквате функцията, както и всички модификатори, които включвате (като незадължителни аргументи). Модификаторът ви позволява да промените датата, като например добавяне на брой дни, задаване на местно време и т.н.
Синтаксис
Синтаксисът е така:
strftime(format, timestring, modifier, modifier, ...)
format
Аргументът може да бъде всяка комбинация от валидни замествания на низове за формат за strftime()
функция.
timestring
аргументът трябва да е валиден времеви низ.
modifier
аргументите са незадължителни. Можете да предоставите един или повече модификатори. Ако предоставите модификатор, той трябва да е валиден модификатор.
Пример
Ето пример за демонстрация.
SELECT strftime('%Y-%m-%d %H:%M:%S', 'now');
Резултат:
2020-04-29 01:29:54
now
времевият низ се преобразува в текущата дата и час въз основа на предоставения форматен низ.
В този случай моят форматен низ връща точно същия резултат като datetime('now')
би се върнал.
Добавяне на модификатор
Можем да променим предишния резултат с помощта на модификатор. Ето един пример.
SELECT strftime('%Y-%m-%d %H:%M:%S', 'now', '+2 hours');
Резултат:
2020-04-29 03:31:50
В този случай добавих два часа към времето.
Множество модификатори
Можете да добавите множество модификатори. Ето пример за добавяне на друг модификатор към предишния пример.
SELECT strftime('%Y-%m-%d %H:%M:%S', 'now', '+2 hours', 'localtime');
Резултат:
2020-04-29 13:33:22
В моя случай localtime
модификатор доведе до преместване на времето напред.
Това е така, защото localtime
модификаторът предполага, че предоставеният низ от време е в универсално координирано време (UTC). След това настройва времевия низ, така че да показва местно време.
Може да получите различен резултат в зависимост от вашето местно време.
Тук отново се сравнява оригиналното местно време с модифицирания резултат:
SELECT
strftime('%Y-%m-%d %H:%M:%S', 'now', 'localtime') AS "Local",
strftime('%Y-%m-%d %H:%M:%S', 'now', '+2 hours', 'localtime') AS "Modified";
Резултат:
Local Modified ------------------- ------------------- 2020-04-29 11:34:57 2020-04-29 13:34:57
Unix/Epoch Time
Можете да използвате %s
форматен низ (с малки букви) за изчисляване на времето за епоха.
SELECT strftime('%s', 'now');
Резултат:
1588124826
Времето на епохата (известно също като време на епоха, POSIX време, секунди от епохата или време на UNIX епоха) е броят на секундите от 1970-01-01.
Unix времето е широко използвано в операционни системи и файлови формати.
Юлиански ден
Можете да използвате %J
да върнем Юлианския ден.
Денят на Юлиан е броят на дните след обяд в Гринуич на 24 ноември 4714 г. пр.н.е. (използвайки пролептичния григориански календар).
Ако използвате пролептичния юлиански календар, това е понеделник, 1 януари 4713 г. пр. н. е.
Юлианският ден обикновено се използва от астрономи, софтуер и т.н. за изчисляване на изминалите дни между две събития.
Ето как да върнете Юлианския ден с strftime()
функция.
SELECT strftime('%J', 'now');
Резултат:
2458968.575441667
Друг начин да направите това в SQLite е да използвате julianday()
функция.
Период от време
Както при всички функции за дата и час на SQLite, strftime()
работи само за дати между 0000-01-01 00:00:00 и 9999-12-31 23:59:59 (юлиански номера на дните от 1721059.5 до 5373484.5).
За дати извън този диапазон резултатите са недефинирани.