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

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

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

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

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

Синтаксис

Синтаксисът е така:

datetime(timestring, modifier, modifier, ...)

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

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

Пример

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

SELECT datetime('now');

Резултат:

2020-04-28 23:56:06

now времевият низ се преобразува в текущата дата и час.

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

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

SELECT datetime('now', '+3 hours');

Резултат:

2020-04-29 02:56:52

В този случай добавих три часа към времето. Като се има предвид първоначалният час, това също доведе до преместване на датата напред към следващия ден.

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

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

SELECT datetime('now', '+3 hours', 'localtime');

Резултат:

2020-04-29 12:58:13

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

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

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

Тук отново се сравнява оригиналното местно време с модифицирания резултат:

SELECT 
  datetime('now', 'localtime') AS "Local",
  datetime('now', '+3 hours', 'localtime') AS "Modified";

Резултат:

Local                Modified           
-------------------  -------------------
2020-04-29 10:02:09  2020-04-29 13:02:09

Дата като часови низ

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

Ако предоставите само частта за дата, частта за час ще бъде настроена на всички нули.

SELECT datetime('2010-08-15');

Резултат:

2010-08-15 00:00:00

Ако е предоставена само частта за времето, тогава датата е зададена на 2000-01-01.

SELECT datetime('23:58:57');

Резултат:

2000-01-01 23:58:57

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

SELECT datetime('2451545.49927083');

Резултат:

2000-01-01 23:58:57

datetime() срещу strftime()

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

SELECT 
  datetime('now'),
  strftime('%Y-%m-%d %H:%M:%S', 'now');

Резултат:

datetime('now')      strftime('%Y-%m-%d %H:%M:%S', 'now')
-------------------  ------------------------------------
2020-04-29 00:16:12  2020-04-29 00:16:12                 

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

Както при всички функции за дата и час на SQLite, datetime() работи само за дати между 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. Свързване на таблици с помощта на база данни за стаи в Android Studio

  2. Android Room Database, извличане на конкретна стойност на последния въведен запис

  3. Как работи ON CONFLICT в SQLite

  4. Как да изтриете елементи от sqlite база данни с клас SQLiteOpenHelper

  5. Форматирайте резултатите от SQLite заявката като колони със заглавки на колони