SQLite 没有专门用于存储日期和/或时间的存储类。相反,SQLite 的内置日期和时间函数能够将日期和时间存储为 TEXT、REAL 或INTEGER 值:

  • TEXT 作为 ISO8601 字符串("YYYY-MM-DD HH:MM:SS.SSS")。
  • REAL 作为儒略日数字,即自公元前 4714 年 11 月 24 日格林威治中午以来的天数根据公历。
  • INTEGER 作为 Unix 时间,自 1970-01-01 00:00:00 UTC 以来的秒数。

应用程序可以选择以任何这些格式存储日期和时间,并使用内置的日期和时间函数在格式之间自由转换。

为了与其他 SQL 数据库兼容,SQLite 允许使用其他数据库中使用的通用数据类型名称,并将它们映射到其基本 SQLite 数据类型。

下表显示了如何其他数据库中的常见日期数据类型在 SQLite 中进行解释。另请参阅:SQLite 数据类型

数据类型语法描述
DATE相当于 NUMERIC
DATETIME相当于到 NUMERIC
TIMESTAMP相当于 NUMERIC
TIME相当于to NUMERIC

示例:创建一个日期数据类型的表

下面提到的语句创建一个名为Employee 包含五列:EmpID、Name、City、Age 和 Date_of_Joining.

CREATE TABLE Employee (
  EmpID INT NOT NULL,
  Name VARCHAR(255) NOT NULL,
  City VARCHAR(100),
  Age INT,
  Date_of_Joining DATE
); 

这将创建一个名为 Employee 的空表,其中包含五列。

示例:使用日期数据类型

考虑一个名为 Employee 的数据库表,其中包含以下记录:

EmpIDNameCityAgeDate_of_Joining
1JohnLondon252019-05-25
2MarryNew York242018-10-15
3JoParis272017-06-09
4KimAmsterdam302014-04-21
5RameshNew Delhi282019-05-25
6HuangBeijing282020-01-10

要获取 Employee 表中于"2019-05-25"加入组织的所有员工的数据,查询为:

SELECT * FROM Employee
WHERE Date_of_Joining = '2019-05-25'; 

这将产生如下所示的结果:

EmpIDNameCityAgeDate_of_Joining
1JohnLondon252019-05-25
5RameshNew Delhi282019-05-25

完整的日期和时间参考

对于所有 SQLite 日期和时间函数的完整参考,请参阅 SQLite 数据和时间参考