English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
SQLite поддерживает следующие пять функций даты и времени:
Номер | функция | Пример |
---|---|---|
1 | date(timestring, modifier, modifier, ...) | Возвращает дату в формате YYYY-MM-DD. |
2 | time(timestring, modifier, modifier, ...) | Возвращает время в формате HH:MM:SS. |
3 | datetime(timestring, modifier, modifier, ...) | Возвращает дату в формате YYYY-MM-DD HH:MM:SS. |
4 | julianday(timestring, modifier, modifier, ...) | Это вернет количество дней с полудня 24 ноября 4714 года до н.э. по Гринвичу. |
5 | strftime(format, timestring, modifier, modifier, ...) | Эта функция возвращает форматированную дату в соответствии с указанным форматным строкой. Подробности см. ниже. |
Указанные пять функций даты и времени принимают строку времени в качестве аргумента. Строка времени может заканчиваться нулями или несколькими модификаторами. Функция strftime() также может принимать строку формата в качестве первого аргумента. Ниже мы более подробно расскажем о различных типах строк времени и модификаторах.
Строка времени может принимать любое из следующих форматов:
Номер | Строка времени | Пример |
---|---|---|
1 | YYYY-MM-DD | 2010-12-30 |
2 | YYYY-MM-DD HH:MM | 2010-12-30 12:10 |
3 | YYYY-MM-DD HH:MM:SS.SSS | 2010-12-30 12:10:04.100 |
4 | MM-DD-YYYY HH:MM | 30-12-2010 12:10 |
5 | HH:MM | 12:10 |
6 | YYYY-MM-DDTHH:MM | 2010-12-30 12:10 |
7 | HH:MM:SS | 12:10:01 |
8 | YYYYMMDD HHMMSS | 20101230 121001 |
9 | now | 2013-05-07 |
Вы можете использовать "T" в качестве текстового разделителя даты и времени.
Строка времени может заканчиваться нулями или несколькими модификаторами, которые изменяют дату и/или время, возвращаемые этими пятью функциями. Время может быть возвращено любыми из пяти вышеупомянутых функций. Модификаторы должны использоваться слева направо. Ниже приведены модификаторы, доступные в 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