sqlite将分钟字段添加到日期字段

0pizxfdo  于 2021-07-26  发布在  Java
关注(0)|答案(3)|浏览(319)

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

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

这个 start 以及 end 是日期,持续时间是分钟。我想检查是否开始+持续时间<结束
我知道我可以使用日期函数 datetime(start,'+14 minutes'); 但我如何使用另一个列值来实现这一点呢?

y1aodyip

y1aodyip1#

如果要创建约束 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 .
请注意,如果表已经存在,则不能添加约束。
您必须使用上述模式(包括约束)创建一个新表,将旧表的数据复制到新表(如果它们满足约束的条件),删除旧表并重命名新表。

7nbnzgx9

7nbnzgx92#

可以构造字符串:

datetime(start, '+' || dur || ' minute')
bhmjp9jg

bhmjp9jg3#

这就是你想要的?

dt_start < datetime(dt_end, '+' || duration || ' minute')

请注意 start 以及 end 在大多数数据库中都是语言关键字,因此列名不是很好的选择。我重新命名了那些列 dt_start 以及 dt_end 在上述代码中。

相关问题