gpt4 book ai didi

database - 如何防止将无效日期插入到 SQLite 表中?

转载 作者:搜寻专家 更新时间:2023-10-30 21:59:05 25 4
gpt4 key购买 nike

SQLite 表不能有日期或时间戳类型的列。日期存储为文本或数字。

既然如此:

  • 如何防止将像 2 月 31 日这样的无效日期插入到表格中?

我知道您可以在插入之前在应用程序中验证日期,但这不是我要找的,因为这不会阻止使用 SQLite 提示符或使用某些 SQLite GUI 工具输入无效日期。

最佳答案

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)
);

(需要 IS 才能正确处理 NULL。)

关于database - 如何防止将无效日期插入到 SQLite 表中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25101120/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com