首页 > 解决方案 > SQLite将分钟字段添加到日期字段

问题描述

假设我有一个像这样的简单数据库:

CREATE TABLE test (start TEXT, end TEXT, duration INTEGER);

和是日期,持续时间以分钟为单位startend我想检查 start+duration < end

我知道我可以使用 date 函数datetime(start,'+14 minutes');,但我将如何使用另一个列值呢?

标签: sqlsqlitedatetime

解决方案


如果要创建一个约束,使其start + duration始终小于end表中的约束,则语法如下:

CREATE TABLE test (
  start TEXT, 
  end TEXT, 
  duration INTEGER,
  CHECK (DATETIME(start, duration || ' minute') < end)
);

没有必要串联'+'
仅当您的日期列具有 SQLite 的唯一有效日期格式时,这才有效,即YYYY-MM-DD hh:mm:ss.
请注意,如果表已存在,则无法添加约束。
您必须使用上述模式(包括约束)创建一个新表,将旧表的数据复制到新表(如果它们满足约束条件),删除旧表并重命名新表。


推荐阅读