SQLite
 sql >> база данни >  >> RDS >> SQLite

Как работи функцията Strftime() в SQLite

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).

За дати извън този диапазон резултатите са недефинирани.


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Актуализиране на данните за дейността от услугата, когато е на пауза

  2. 4 таблични изходни режима в SQLite

  3. Как да създадете таблица само ако тя не съществува в SQLite

  4. SQLite Къде

  5. Как да получите ред в SQLite по индекс (не по идентификатор)