SQLite
 sql >> база данни >  >> RDS >> SQLite

Как работи функцията Date() в SQLite

SQLite има date() функция, която ви позволява да върнете стойност за дата въз основа на низ от време и всякакви модификатори.

Връща датата в този формат:ГГГГ-ММ-ДД

За да използвате тази функция, трябва да предоставите времеви низ плюс всякакви (по избор) модификатори. Модификаторът ви позволява да променяте датата, като например добавяне на брой дни, задаване на местно време и т.н.

Синтаксис

Синтаксисът на date() функцията е така:

date(timestring, modifier, modifier, ...)

timestring аргументът трябва да е валиден времеви низ.

modifier аргументите са незадължителни. Можете да предоставите един или повече модификатори. Ако предоставите модификатор, той трябва да е валиден модификатор.

Пример

Ето пример за демонстрация на date() функция се използва с един аргумент.

SELECT date('now');

Резултат:

2020-04-27

now времевият низ се преобразува в текущата дата и час. Като се има предвид, че използвам date() функция, се връща само датата.

Добавяне на модификатор

Можем да променим предишния резултат с помощта на модификатор. Ето един пример.

SELECT date('now', '+6 months');

Резултат:

2020-10-27

В този случай добавих шест месеца към датата.

Множество модификатори

Както споменахме, можете да добавите един или повече модификатори. Ето пример за добавяне на друг модификатор към предишния пример.

SELECT date('now', '+6 months', 'localtime');

Резултат:

2020-10-28

В моя случай localtime модификатор доведе до добавяне на ден към датата.

Причината за това е, че localtime модификаторът предполага, че предоставеният времеви низ е в универсално координирано време (UTC). След това настройва времевия низ, така че да показва местно време.

Следователно може да получите различен резултат в зависимост от вашето местно време.

Стрингов литерал като времеви низ

Горните примери използват now като времеви низ, но можете да предоставите всеки валиден времеви низ.

Ето няколко други примера.

SELECT date('2020-04-27 23:58:57');

Резултат:

2020-04-27 

В този случай той просто премахва частта от времето от датата.

Ето го отново, но с някои модификатори.

SELECT date('2020-04-27 23:58:57', 'start of year', '+6 months');

Резултат:

2020-07-01 

В този случай исках да получа датата, която е 6 месеца от началото на годината на посочената дата.

Ето пример, който използва Юлианския ден като низ от време.

SELECT date('2458967.49737293');

Резултат:

2020-04-27

date() срещу strftime()

date() функцията връща точно същия резултат, който strftime('%Y-%m-%d', ...) се завръща. date() функцията е просто по-удобен начин да го направите.

SELECT 
  date('now'),
  strftime('%Y-%m-%d', 'now');

Резултат:

date('now')  strftime('%Y-%m-%d', 'now')
-----------  ---------------------------
2020-04-28   2020-04-28                 

Период от време

Както при всички функции за дата и час на SQLite, date() работи само за дати между 0000-01-01 00:00:00 и 9999-12-31 23:59:59 (юлиански номера на дните от 1721059.5 до 5373484.5).

За дати извън този диапазон резултатите са недефинирани.


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. SQLite въвежда функцията UNIXEPOCH().

  2. Вземете първия, втория, третия или четвъртия понеделник от месеца в SQLite

  3. GreenDao freemaker.jar липсва

  4. Вградената връзка в Android Room игнорира условието на SQL where

  5. SQLite Поръчайте по дата 1530019888000