SQLite表不能包含日期或时间戳类型的列。日期存储为文本或数字。
情况就是这样:
我知道您可以在插入之前在应用程序中验证日期,但这不是我正在寻找的,因为这不会阻止使用SQLite输入无效日期提示或使用一些SQLite GUI工具。
答案 0 :(得分:4)
built-in date functions在无法解释其日期参数时返回NULL,因此您可以添加一个不会发生这种情况的检查:
CREATE TABLE MyLittleTable (
MyDate CHECK (date(MyDate) IS NOT NULL)
);
但是,这些功能没有做太多检查:
> SELECT date('2014-02-31');
2014-02-31
要标准化日期,您必须对其进行一些计算:
> SELECT date('2014-02-31', '+0 days');
2014-03-03
因此,您可以检查此规范化是否不会更改值:
CREATE TABLE MyLittleTable (
MyDate CHECK (date(MyDate,'+0 days') IS MyDate)
);
(正确处理NULL需要IS
。)