Резюме :в този урок ще ви покажем как да работите със стойностите за дата и час в SQLite и да използвате вградените функции за дата и час за обработка на стойности за дата и час.
SQLite не поддържа вграден клас за съхранение на дата и/или час. Вместо това той използва някои вградени функции за дата и час, за да използва други класове за съхранение, като TEXT
, REAL
, или INTEGER
за съхраняване на стойностите за дата и час.
Използване на TEXT
клас за съхранение за съхранение на дата и час на SQLite
Ако използвате TEXT
клас за съхранение, за да съхранявате стойност за дата и час, трябва да използвате низовия формат ISO8601, както следва:
YYYY-MM-DD HH:MM:SS.SSS
Code language: SQL (Structured Query Language) (sql)
Например, 2016-01-01 10:20:05.123
Първо създайте нова таблица с име datetime_text
за демонстрация.
CREATE TABLE datetime_text(
d1 text,
d2 text
);
Code language: SQL (Structured Query Language) (sql)
Опитайте го
Таблицата съдържа две колони d1
и d2
с TEXT
тип данни.
За да вмъкнете стойности за дата и час в datetime_text
таблица, използвате DATETIME
функция.
Например, за да получите текущата стойност за дата и час в UTC, вие предавате сегашния литерален низ на функцията, както следва:
SELECT datetime('now');
Code language: SQL (Structured Query Language) (sql)
Опитайте го
За да получите местното време, предавате допълнителен аргумент localtime
.
SELECT datetime('now','localtime');
Code language: SQL (Structured Query Language) (sql)
Опитайте го
Второ, поставете стойностите за дата и час в datetime_text
таблица, както следва:
INSERT INTO datetime_text (d1, d2)
VALUES(datetime('now'),datetime('now', 'localtime'));
Code language: SQL (Structured Query Language) (sql)
Опитайте го
Трето, потърсете данните от datetime_text
таблица.
SELECT
d1,
typeof(d1),
d2,
typeof(d2)
FROM
datetime_text;
Code language: SQL (Structured Query Language) (sql)
Опитайте го
Използване на REAL
клас за съхранение за съхраняване на стойности за дата и час в SQLite
Можете да използвате REAL
клас за съхранение за съхраняване на стойностите на датата и/или часа като числа на юлиански дни, което е броят на дните от обяд в Гринуич на 24 ноември 4714 г. пр.н.е. въз основа на пролептичния григориански календар.
Нека да разгледаме пример за използване на класа за съхранение REAL за съхраняване на стойности за дата и час.
Първо създайте нова таблица с име datetime_real
.
CREATE TABLE datetime_real(
d1 real
);
Code language: SQL (Structured Query Language) (sql)
Опитайте го
Второ, поставете „текущата“ стойност за дата и час в datetime_real
таблица.
INSERT INTO datetime_real (d1)
VALUES(julianday('now'));
Code language: SQL (Structured Query Language) (sql)
Опитайте го
Използвахме julianday()
функция за преобразуване на текущата дата и час в Юлиански ден.
Трето, заявете данни от datetime_real
таблица.
SELECT d1 FROM datetime_real;
Code language: SQL (Structured Query Language) (sql)
Опитайте го
Резултатът не е четим от човека.
За щастие можете да използвате вградения date()
и time()
функции за форматиране на стойност за дата и час, както следва:
SELECT
date(d1),
time(d1)
FROM
datetime_real;
Code language: SQL (Structured Query Language) (sql)
Опитайте го
Използване на INTEGER
за съхраняване на стойности за дата и час в SQLite
Освен TEXT
и REAL
класове за съхранение, можете да използвате INTEGER
клас за съхранение за съхраняване на стойности за дата и час.
Обикновено използваме INTEGER
за съхраняване на UNIX време, което е броят на секундите от 1970-01-01 00:00:00 UTC
. Вижте следния пример:
Първо, създайте таблица, която има една колона, чийто тип данни е INTEGER
за да съхранявате стойностите на датата и часа.
CREATE TABLE datetime_int (d1 int);
Code language: SQL (Structured Query Language) (sql)
Опитайте го
Второ, поставете текущата стойност за дата и час в datetime_int
таблица.
INSERT INTO datetime_int (d1)
VALUES(strftime('%s','now'));
Code language: SQL (Structured Query Language) (sql)
Опитайте го
Трето, заявете данни от datetime_int
таблица.
SELECT d1 FROM datetime_int;
Code language: SQL (Structured Query Language) (sql)
Опитайте го
Това е цяло число.
За да форматирате резултата, можете да използвате вградения datetime()
функционира, както следва:
SELECT datetime(d1,'unixepoch')
FROM datetime_int;
Code language: SQL (Structured Query Language) (sql)
Опитайте го
С помощта на SQLite можете свободно да избирате всякакви типове данни за съхраняване на стойности за дата и час и да използвате вградената функция за дати и часове за конвертиране между формати.
За подробна информация относно функциите за дати и часове на SQLite, вижте вградените функции за дати и часове.
В този урок научихте как да използвате TEXT
, REAL
и INTEGER
класове за съхранение за съхраняване на стойности за дата и час. Освен това научихте как да използвате вградените функции за дата и час, за да конвертирате съхранените стойности за дата и час в четими формати.