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

Функции за дата и час в SQLite

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                   

  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Как да използвате _COUNT в BaseColumns

  2. GROUP_CONCAT в SQLite

  3. Как работи SQLite Upper().

  4. Добавете колона към съществуваща таблица в SQLite

  5. Как да активирате поддръжка на чужд ключ в SQLite