sql - SQLite将分钟字段添加到日期字段
问题描述
假设我有一个像这样的简单数据库:
CREATE TABLE test (start TEXT, end TEXT, duration INTEGER);
和是日期,持续时间以分钟为单位start
。end
我想检查 start+duration < end
我知道我可以使用 date 函数datetime(start,'+14 minutes');
,但我将如何使用另一个列值呢?
解决方案
如果要创建一个约束,使其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
.
请注意,如果表已存在,则无法添加约束。
您必须使用上述模式(包括约束)创建一个新表,将旧表的数据复制到新表(如果它们满足约束条件),删除旧表并重命名新表。
推荐阅读
- r - 使用 group_by、nesting()、complete() 并计算 R 中庞大数据集的时间间隔
- javascript - 尽管路径正确但无法打开声音文件 ./ , ../ , ../../ 都没有
- kotlin - 让 kotlinx 序列化在多平台项目中工作
- powershell - 通过检查识别隐藏 (MZ) 可执行文件的 PowerShell 脚本 - 错误
- php - 使当前活动的网站页面不在导航栏中重新加载
- python - 如何选择要加载的随机 tmx 地图?在pygame中打开一个随机文件?
- select - 在暂存文件#snowflake-cloud-platform 上选择中的列绑定变量
- php - Windows 10 XAMPP 上的 GetText 无法翻译我的文本
- java - 没有输入任何内容时解析字符串生成我生成的错误消息
- python - 如何获取熊猫数据框重复行的聚合统计信息?