SQLite поддерживает пять функций даты и времени следующим образом:
Sr.No. | функция | пример |
---|---|---|
1 | дата (временная строка, модификаторы …) | Возвращает дату в следующем формате: ГГГГ-ММ-ДД |
2 | время (временная строка, модификаторы …) | Это возвращает время как ЧЧ: ММ: СС |
3 | datetime (временная строка, модификаторы …) | Возвращает ГГГГ-ММ-ДД ЧЧ: ММ: СС |
4 | julianday (временные ряды, модификаторы …) | Возвращает количество дней с полудня в Гринвиче 24 ноября 4714 г. до н.э. |
5 | strftime (временная строка, модификаторы …) | Это возвращает дату, отформатированную в соответствии со строкой форматирования, указанной в качестве первого аргумента, отформатированного в соответствии с форматерами, поясненными ниже. |
Все вышеперечисленные пять функций даты и времени принимают строку времени в качестве аргумента. За временной строкой следует ноль или более модификаторов. Функция strftime () также принимает строку формата в качестве первого аргумента. Следующий раздел предоставит вам подробную информацию о различных типах временных строк и модификаторов.
Строки времени
Временная строка может быть в любом из следующих форматов —
Sr.No. | Строка времени | пример |
---|---|---|
1 | YYYY-MM-DD | 2010-12-30 |
2 | ГГГГ-ММ-ДД ЧЧ: ММ | 2010-12-30 12:10 |
3 | ГГГГ-ММ-ДД ЧЧ: ММ: СС.ССС | 2010-12-30 12: 10: 04.100 |
4 | ММ-ДД-ГГГГ ЧЧ: ММ | 30-12-2010 12:10 |
5 | HH: MM | 12:10 |
6 | ГГГГ-ММ-ДД Т ЧЧ: ММ | 2010-12-30 12:10 |
7 | НН: ММ: СС | 12:10:01 |
8 | ГГГГММДД ЧЧММСС | 20101230 121001 |
9 | сейчас | 2013-05-07 |
Вы можете использовать букву «Т» в качестве буквального символа, разделяющего дату и время.
Модификаторы
За временной строкой может следовать ноль или более модификаторов, которые будут изменять дату и / или время, возвращаемое любой из вышеперечисленных пяти функций. Модификаторы применяются слева направо.
Следующие модификаторы доступны в SQLite —
- ННН дней
- NNN часов
- NNN минут
- NNN.NNNN секунд
- NNN месяцев
- NNN лет
- начало месяца
- начало года
- начало дня
- день недели N
- unixepoch
- местное время
- универсальное глобальное время
Форматтеры
SQLite предоставляет очень удобную функцию strftime () для форматирования любой даты и времени. Вы можете использовать следующие замены для форматирования даты и времени.
подмена | Описание |
---|---|
% d | День месяца, 01-31 |
% е | Дробные секунды, СС.ССС |
%ЧАС | Час, 00-23 |
% J | День года, 001-366 |
% J | Юлианский номер дня, DDDD.DDDD |
% м | Месяц, 00-12 |
% M | Минута 00-59 |
% s | Секунды с 1970-01-01 |
% S | Секунды, 00-59 |
% мас | День недели 0-6 (0 — воскресенье) |
% W | Неделя года, 01-53 |
% Y | Год, ГГГГ |
%% | % условное обозначение |
Примеры
Давайте теперь попробуем различные примеры, используя подсказку 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 следующим образом: