В этом учебном пособии вы узнаете, как использовать SQLite функцию strftime с синтаксисом и примерами.
Описание
SQLite функция strftime - это очень мощная функция, которая позволяет вам возвращать отформатированную дату, а также выполнять вычисления дат в эту дату. Эта функция возвращает дату в виде текстового представления.
Синтаксис
Синтаксис функции strftime в SQLite:
Параметры или аргументы
format
Строка формата для применения, которая может быть:
Format | Пояснение |
---|---|
%d | День месяца (1-31) |
%f | Секунды с долями секунды (SS.sss) |
%H | Час на 24-часовых часах (00-23) |
%j | День года (001-366) |
%J | Юлианский номер дня (DDDDDDD.ddddddd) |
%m | Месяц (01-12) |
%M | Минуты (00-59) |
%s | Секунды с 1970-01-01 |
%S | Секунды (00-59) |
%w | День недели (0-6) (0 = воскресенье, 1 = понедельник, 2 = вторник, 3 = среда, 4 = четверг, 5 = пятница, 6 = суббота) |
%W | Номер недели в году (00-53) Первый понедельник - начало недели 1. |
%Y | Год с веком (гггг) |
%% | % как литерал |
timestring
Значение даты. Это может быть одно из следующих:
timestring | Пояснение |
---|---|
now | now литерал, используемый для возврата текущей даты. |
YYYY-MM-DD | Значение даты в формате 'YYYY-MM-DD' |
YYYY-MM-DD HH:MM | Значение даты в формате 'YYYY-MM-DD HH:MM' |
YYYY-MM-DD HH:MM:SS | Значение даты в формате 'YYYY-MM-DD HH:MM:SS' |
YYYY-MM-DD HH:MM:SS.SSS | Значение даты в формате 'YYYY-MM-DD HH:MM:SS.SSS' |
HH:MM | Значение даты в формате 'HH:MM' |
HH:MM:SS | Значение даты в формате 'HH:MM:SS' |
HH:MM:SS.SSS | Значение даты в формате 'HH:MM:SS.SSS' |
YYYY-MM-DDTHH:MM | Значение даты в формате YYYY-MM-DDTHH:MM, где Т - буквенный символ, разделяющий части даты и времени |
YYYY-MM-DDTHH:MM:SS | Значение даты в формате 'YYYY-MM-DDTHH:MM:SS', где Т - буквенный символ, разделяющий части даты и времени |
YYYY-MM-DDTHH:MM:SS.SSS | Значение даты в формате 'YYYY-MM-DDTHH:MM:SS.SSS', где Т - это буквенный символ, разделяющий части даты и времени |
DDDDDDDDDD | Юлианский номер даты |
modifier1, modifier2, ... modifier_n
Необязательный. Это модификаторы, которые применяются к timestring. Каждый модификатор применяется по порядку и является накопительным. Они могут быть одним или несколькими из следующих:
modifier | Пояснение |
---|---|
[+-]NNN years | Количество лет, добавленных/вычтенных к дате |
[+-]NNN months | Количество месяцев, добавленных/вычтенных к дате |
[+-]NNN days | Количество дней, добавленных/вычтенных к дате |
[+-]NNN hours | Количество часов, добавленных/вычтенных к дате |
[+-]NNN minutes | Количество минут, добавленных/вычтенных к дате |
[+-]NNN seconds | Количество секунд, добавленных/вычтенных к дате |
[+-]NNN.NNNN seconds | Количество секунд (и дробных секунд), добавленных/вычтенных к дате |
start of year | Перенос даты обратно на начало года |
start of month | Перенос даты обратно на начало месяца |
start of day | Перенос даты обратно на начало дня |
weekday N | Перемещает дату вперед на следующую дату, где номер дня недели равен N (0 = воскресенье, 1 = понедельник, 2 = вторник, 3 = среда, 4 = четверг, 5 = пятница, 6 = суббота) |
unixepoch | Используется с временной шкалой DDDDDDDDDD для интерпретации даты как времени UNIX (то есть: количество секунд с 1970-01-01) |
localtime | Регулирует дату по местному времени, при условии, что временная строка была выражена в UTC |
utc | Приспосабливает дату к utc, предполагая, что временная строка была выражена в местном времени |
Применение
Функция strftime может использоваться в следующих версиях SQLite:
- SQLite 3.8.6, SQLite 3.8.x, SQLite 3.7.x, SQLite 3.6.x
Пример
Рассмотрим примеры SQLite функций strftime и узнаем, как использовать функцию strftime в SQLite.
Пример текущей даты
Вы можете получить текущую дату в SQLite, используя 'now' с функцией strftime следующим образом:
1 2 3 4 5 |
sqlite> SELECT strftime('%Y %m %d', 'now'); Результат: '2019-01-25' (в формате YYYY MM DD) sqlite> SELECT strftime('%Y-%m-%d %H:%M', 'now'); Результат: '2019-01-25 11:14' (в формате YYYY-MM-DD HH:MM) |
Пример первого дня месяца
Вы можете получить первый день месяца с помощью функции strftime следующим образом:
1 2 3 4 5 6 7 8 9 10 11 |
sqlite> SELECT strftime('%Y-%m-%d', '2019-01-25', 'start of month'); Результат: '2019-01-01' sqlite> SELECT strftime('%Y-%m-%d', 'now', 'start of month'); Результат: '2019-01-01' (при условии, что текущая дата 2019-01-25) sqlite> SELECT strftime('%Y-%m-%d', '2019-01-25', '-6 days'); Результат: '2019-01-19' sqlite> SELECT strftime('%Y-%m-%d', 'now', '-6 days'); Результат: '2019-01-19' (при условии, что текущая дата 2019-01-25) |
В этих примерах мы вычислили первый день месяца несколькими различными способами. Модификатор 'start of month' позволяет нам взять любое значение даты и вычислить первый день месяца для этой даты. Это включает использование timestring 'now'.
Мы также можем добавлять или вычитать дни к значению даты, используя модификатор 'NNN days'. В наших примерах мы вычли 6 дней из наших значений даты. Так как у нас было значение даты 2019-01-25, возвращается первый день месяца (т.е. 2019-01-01).
Пример последнего дня месяца
Вы можете получить последний день месяца, используя функцию strftime следующим образом:
1 2 3 4 5 6 7 8 9 10 11 |
sqlite> SELECT strftime('%Y-%m-%d', '2019-01-25', 'start of month', '+1 month', '-1 day'); Результат: '2019-01-31' sqlite> SELECT strftime('%Y-%m-%d', 'now', 'start of month', '+1 month', '-1 day'); Результат: '2019-01-31' (при условии, что текущая дата 2019-01-25) sqlite> SELECT strftime('%Y-%m-%d', '2019-01-25', '+24 days'); Результат: '2019-02-18' sqlite> SELECT strftime('%Y-%m-%d', 'now', '+24 days'); Результат: '2019-02-18' (при условии, что текущая дата 2019-01-25) |
В этих примерах мы вычислили последний день месяца несколькими различными способами. Сначала мы используем модификатор 'start of month' для вычисления первого дня месяца, затем добавляем 1 месяц и затем вычитаем 1 день.
Мы также можем добавлять или вычитать дни к значению даты, используя модификатор 'NNN days'. В наших примерах мы добавили 24 дня к нашим значениям даты. Поскольку у нас было значение даты 2019-01-25, это возвращает текущую дату +24 дня (то есть: 2019-02-18).
Пример сложения/вычитания лет
Вы можете использовать функцию strftime, чтобы манипулировать значением даты и добавлять или вычитать годы. Это делается с помощью модификатора 'NNN years' с функцией strftime следующим образом:
1 2 3 4 5 6 7 8 |
sqlite> SELECT strftime('%Y-%m-%d', '2019-01-25', '+2 years'); Результат: '2021-01-25' sqlite> SELECT strftime('%Y-%m-%d', '2014-01-16', '-2 years'); Результат: '2012-01-16' sqlite> SELECT strftime('%Y-%m-%d', 'now', '+5 years'); Результат: '2024-01-25' (при условии, что текущая дата 2019-01-25) |
В этих примерах мы использовали модификатор 'NNN years', чтобы прибавить 2 года в первом примере, вычесть 2 года во втором примере и добавить 5 лет к текущей дате в третьем примере.
Пример сложения/вычитания дней
Вы можете использовать функцию strftime, чтобы манипулировать значением даты и добавлять или вычитать к нему дни. Это делается с помощью модификатора 'NNN days' с функцией strftime следующим образом:
1 2 3 4 5 6 7 8 |
sqlite> SELECT strftime('%Y-%m-%d', '2019-01-25', '+7 days'); Результат: '2019-02-01' sqlite> SELECT strftime('%Y-%m-%d', '2019-01-25', '-7 days'); Результат: '2019-01-18' sqlite> SELECT strftime('%Y-%m-%d', 'now', '+10 days'); Результат: '2019-02-04' (при условии, что текущая дата 2019-01-25) |
В этих примерах мы использовали модификатор 'NNN days', чтобы добавить 7 дней в первом примере, вычесть 7 дней во втором примере и добавить 10 дней к текущей дате в третьем примере.