В этом учебном пособии вы узнаете, как использовать SQLite функцию julianday с синтаксисом и примерами.
Описание
SQLite функция julianday берет дату, применяет модификаторы, а затем возвращает дату как юлианский день. Юлианский день - это количество дней с 12:00 24 ноября 4714 г. до н.э. по гринвичскому времени по григорианскому календарю. Функция julianday возвращает дату в виде числа с плавающей запятой.
Синтаксис
Синтаксис функции julianday в SQLite:
Параметры или аргументы
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, предполагая, что временная строка была выражена в местном времени |
Применение
Функция julianday может использоваться в следующих версиях SQLite:
- SQLite 3.8.6, SQLite 3.8.x, SQLite 3.7.x, SQLite 3.6.x
Пример
Рассмотрим некоторые примеры SQLite функций julianday и узнаем, как использовать функцию julianday в SQLite.
Простой пример даты
Вы можете преобразовать простую дату в юлианский день с помощью функции julianday следующим образом:
1 2 3 4 5 6 7 8 |
sqlite> SELECT julianday('2019-01-25'); Результат: 2458508.5 sqlite> SELECT julianday('2019-01-25 10:02'); Результат: 2458508.91805556 sqlite> SELECT julianday('2019-01-25 12:45:30'); Результат: 2458509.03159722 |
Пример текущей даты
Вы можете получить текущую дату в SQLite, используя 'now' с функцией julianday, следующим образом:
1 2 |
sqlite> SELECT julianday('now'); Результат: 2458508.83615957 (при условии, что текущая дата 2019-01-25) |
Пример первого дня месяца
Вы можете получить первый день месяца, используя функцию julianday следующим образом:
1 2 3 4 5 6 7 8 9 10 11 |
sqlite> SELECT julianday('2019-01-25', 'start of month'); Результат: 2458484.5 (соответствует 2019-01-01) sqlite> SELECT julianday('now', 'start of month'); Результат: 2458484.5 (при условии, что текущая дата 2019-01-25) sqlite> SELECT julianday('2019-01-25', '-6 days'); Результат: 2458502.5 sqlite> SELECT julianday('now', '-6 days'); Результат: 2458502.83915292 (при условии, что текущая дата 2019-01-25) |
В этих примерах мы вычислили первый день месяца несколькими различными способами. Модификатор 'start of month' позволяет нам взять любое значение даты и вычислить первый день месяца для этой даты. Это включает использование временной шкалы 'now'.
Мы также можем добавлять или вычитать дни к значению даты, используя модификатор 'NNN days'. В наших примерах мы вычли 6 дней из наших значений даты. Поскольку у нас было значение даты 2019-01-25, это возвращает первый день месяца (то есть: 2019-01-01) как julianday, который равен 2458484.5.
Пример последнего дня месяца
Вы можете получить последний день месяца, используя функцию julianday следующим образом:
1 2 3 4 5 6 7 8 9 10 11 |
sqlite> SELECT julianday('2019-01-25', 'start of month', '+1 month', '-1 day'); Результат: 2458514.5 sqlite> SELECT julianday('now', 'start of month', '+1 month', '-1 day'); Результат: 2458514.5 (при условии, что текущая дата 2019-01-25) sqlite> SELECT julianday('2019-01-25', '+24 days'); Результат: 2458532.5 sqlite> SELECT julianday('now', '+24 days'); Результат: 2458532.5 (при условии, что текущая дата 2019-01-25) |
В этих примерах мы вычислили последний день месяца несколькими различными способами. Сначала мы используем модификатор 'start of month' для вычисления первого дня месяца, затем добавляем 1 месяц и затем вычитаем 1 день.
Мы также можем добавлять или вычитать дни к значению даты, используя модификатор 'NNN days'. В наших примерах мы добавили 24 дня к нашим значениям даты.
Пример сложения/вычитания лет
Вы можете использовать функцию julianday, чтобы манипулировать значением даты и добавлять или вычитать годы. Это делается с помощью модификатора 'NNN years' с функцией julianday следующим образом:
1 2 3 4 5 6 7 8 |
sqlite> SELECT julianday('2019-01-25', '+2 years'); Результат: 2459239.5 (соответствует 2021-01-25) sqlite> SELECT julianday('2019-01-25', '-2 years'); Результат: 2457778.5 (соответствует 2017-01-25) sqlite> SELECT julianday('now', '+5 years'); Результат: 2460334.844696 (при условии, что текущая дата 2019-01-25) |
В этих примерах мы использовали модификатор 'NNN years', чтобы прибавить 2 года в первом примере, вычесть 2 года во втором примере и добавить 5 лет к текущей дате в третьем примере.
Пример сложения/вычитания дней
Вы можете использовать функцию julianday, чтобы манипулировать значением даты и добавлять или вычитать дни к нему. Это делается с помощью модификатора 'NNN days' с функцией julianday следующим образом:
1 2 3 4 5 6 7 8 |
sqlite> SELECT julianday('2019-01-25', '+7 days'); Результат: 2458515.5 (соответствует 2019-02-01) sqlite> SELECT julianday('2019-01-25', '-7 days'); Результат: 2458501.5 (соответствует 2019-01-18) sqlite> SELECT julianday('now', '+10 days'); Результат: 2458518.84842954 (при условии, что текущая дата 2019-01-25) |
В этих примерах мы использовали модификатор 'NNN days', чтобы добавить 7 дней в первом примере, вычесть 7 дней во втором примере и добавить 10 дней к текущей дате в третьем примере.