SQLite表不能具有日期或时间戳类型的列。日期存储为文本或数字。
情况是这样的:
我知道您可以在插入之前在应用程序中验证日期,但这不是我想要的,因为这不会阻止使用SQLite提示符或某些SQLite GUI工具输入无效的日期。
当内置日期函数无法解释其日期参数时,它们将返回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)
);
(IS
需要使用它来正确处理NULL。)
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句