English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

Основной курс SQLite

Дополнительный курс SQLite

Программный интерфейс SQLite

Дата и время SQLite

SQLite поддерживает следующие пять функций даты и времени:

НомерфункцияПример
1date(timestring, modifier, modifier, ...)Возвращает дату в формате YYYY-MM-DD.
2time(timestring, modifier, modifier, ...)Возвращает время в формате HH:MM:SS.
3datetime(timestring, modifier, modifier, ...)Возвращает дату в формате YYYY-MM-DD HH:MM:SS.
4julianday(timestring, modifier, modifier, ...)Это вернет количество дней с полудня 24 ноября 4714 года до н.э. по Гринвичу.
5strftime(format, timestring, modifier, modifier, ...)Эта функция возвращает форматированную дату в соответствии с указанным форматным строкой. Подробности см. ниже.

Указанные пять функций даты и времени принимают строку времени в качестве аргумента. Строка времени может заканчиваться нулями или несколькими модификаторами. Функция strftime() также может принимать строку формата в качестве первого аргумента. Ниже мы более подробно расскажем о различных типах строк времени и модификаторах.

Строка времени

Строка времени может принимать любое из следующих форматов:

НомерСтрока времениПример
1YYYY-MM-DD2010-12-30
2YYYY-MM-DD HH:MM2010-12-30 12:10
3YYYY-MM-DD HH:MM:SS.SSS2010-12-30 12:10:04.100
4MM-DD-YYYY HH:MM30-12-2010 12:10
5HH:MM12:10
6YYYY-MM-DDTHH:MM2010-12-30 12:10
7HH:MM:SS12:10:01
8YYYYMMDD HHMMSS20101230 121001
9now2013-05-07

Вы можете использовать "T" в качестве текстового разделителя даты и времени.

Модификатор (Modifier)

Строка времени может заканчиваться нулями или несколькими модификаторами, которые изменяют дату и/или время, возвращаемые этими пятью функциями. Время может быть возвращено любыми из пяти вышеупомянутых функций. Модификаторы должны использоваться слева направо. Ниже приведены модификаторы, доступные в SQLite:

  • NNN дней

  • NNN часов

  • NNN минут

  • NNN.NNNN секунд

  • NNN месяцев

  • NNN лет

  • start of month

  • start of year

  • start of day

  • weekday N

  • unixepoch

  • localtime

  • utc

Форматирование

SQLite предоставляет очень удобные функции strftime() Используйте следующее для форматирования любой даты и времени. Вы можете использовать следующие замены для форматирования даты и времени:

ЗаменитьОписание
%dДень месяца, 01-31
%fСекунды с десятичной частью, SS.SSS
%HЧасы, 00-23
%jДень года, 001-366
%JДень юлианского календаря, DDDD.DDDD
%mМесяц, 00-12
%MМинуты, 00-59
%sЧисло секунд с 01.01.1970
%SСекунды, 00-59
%wДень недели, 0-6 (0 - воскресенье)
%WНеделя года, 01-53
%YГод, YYYY
%%% символ

Пример

Теперь давайте试试 различные примеры с помощью приглашения SQLite. Следующие команды считают текущую дату.

sqlite> SELECT date('now');
2013-05-07

Следующие команды считают последний день текущего месяца.

sqlite> SELECT date('now','start of month','+1 month','-1 day');
2013-05-31

Следующие команды считают дату и время заданного UNIX таймстампа 1092941466.

sqlite> SELECT datetime(1092941466, 'unixepoch');
2004-08-19 18:51:06

Следующие команды считают дату и время заданного UNIX таймстампа 1092941466, учитывая ваш местный часовой пояс.

sqlite> SELECT datetime(1092941466, 'unixepoch', 'localtime');
2004-08-19 13:51:06

Следующие команды считают текущий UNIX таймстамп.

sqlite> SELECT strftime('%s','now');
1393348134

Следующие команды считают количество дней с момента подписания Декларации независимости США.

sqlite> SELECT julianday('now') - julianday('1776-07-04');
86798.7094695023

Следующие команды считают количество секунд с момента определенного момента 2004 года.

sqlite> SELECT strftime('%s','now') - strftime('%s','2004-01-01 02:34:56');
295001572

Следующие команды считают дату первого вторника октября текущего года.

sqlite> SELECT date('now','start of year','+9 months','weekday 2');
2013-10-01

Следующие команды считают время с момента UNIX эры в секундах (аналогично strftime('%s', 'now'), но включают дробную часть).

sqlite> SELECT (julianday('now') - 2440587.5)*86400.0;
1367926077.12598

Чтобы преобразовать значения UTC и локального времени при форматировании даты, используйте модификаторы utc или localtime, как показано ниже:

sqlite> SELECT time('12:00', 'localtime');
05:00:00
sqlite> SELECT time('12:00', 'utc');
19:00:00