Skip to main content

SQLite日期和时间-如何在SQLite中处理日期和时间

SQLite不支持内置的日期和/或时间存储类。相反,它利用一些内置的日期和时间函数来使用其他存储类,如TEXT、REAL或INTEGER来存储日期和时间值。

使用文本存储类存储SQLite日期和时间

如果使用文本存储类存储日期和时间值,则需要使用ISO8601字符串格式,如下所示:

YYYY-MM-DD HH:MM:SS.SSS

例如,2016-01-01 10:20:05.123

首先,创建一个名为datetime_text的新表进行演示。

CREATE TABLE datetime_text(
d1 text,
d2 text
);

试试看

该表包含两列d1和d2,其中包含文本数据类型。

要将日期和时间值插入datetime_文本表,可以使用datetime函数。

例如,要获取当前UTC日期和时间值,请按如下方式将now文字字符串传递给函数:

SELECT datetime('now');

试试看

要获取本地时间,需要传递一个附加参数localtime。

SELECT datetime('now','localtime');

试试看

其次,将日期和时间值插入datetime_文本表,如下所示:

INSERT INTO datetime_text (d1, d2)
VALUES(datetime('now'),datetime('now', 'localtime'));

试试看

第三,从datetime_文本表中查询数据。

SELECT
d1,
typeof(d1),
d2,
typeof(d2)
FROM
datetime_text;

试试看

SQLite Date Using TEXT data type

使用REAL storage类存储SQLite日期和时间值

您可以使用REAL storage类将日期和/或时间值存储为Julian day numbers,这是自公元前4714年11月24日格林威治正午以来的天数,基于公历。

让我们看一个使用REAL storage类存储日期和时间值的示例。

首先,创建一个名为datetime_real的新表。

CREATE TABLE datetime_real(
d1 real
);

试试看

其次,将“当前”日期和时间值插入datetime_real表。

INSERT INTO datetime_real (d1)
VALUES(julianday('now'));

试试看

我们使用julianday()函数将当前日期和时间转换为Julian日。

第三,从datetime_real表中查询数据。

SELECT d1 FROM datetime_real;

试试看

SQLite Date Using REAL data type

输出不是人类可读的。

幸运的是,您可以使用内置的date()和time()函数来格式化日期和时间值,如下所示:

SELECT
date(d1),
time(d1)
FROM
datetime_real;

试试看

SQLite Date and Time functions

使用INTEGER存储SQLite日期和时间值

除了文本和实存储类之外,还可以使用INTEGER存储类来存储日期和时间值。

我们通常使用整数来存储UNIX时间,它是自1970-01-01 00:00:00 UTC以来的秒数。请参见以下示例:

首先,创建一个表,其中有一列的数据类型为整数,用于存储日期和时间值。

CREATE TABLE datetime_int (d1 int);

试试看

其次,将当前日期和时间值插入datetime_int表。

INSERT INTO datetime_int (d1)
VALUES(strftime('%s','now'));

试试看

第三,从datetime_int表中查询数据。

SELECT d1 FROM datetime_int;

试试看

这是一个整数。

要格式化结果,可以使用内置的datetime()函数,如下所示:

SELECT datetime(d1,'unixepoch')
FROM datetime_int;

试试看

SQlite DATETIME function

使用SQLite,您可以自由选择任何数据类型来存储日期和时间值,并使用内置的日期和时间函数在格式之间进行转换。

有关SQLite日期和时间函数的详细信息,请查看内置的日期和时间函数。

在本教程中,您学习了如何使用TEXT、REAL和INTEGER存储类来存储日期和时间值。此外,还学习了如何使用内置日期和时间函数将存储的日期和时间值转换为可读格式。