我有一个包含以下字段的MySQL表:
starttime
并且endtime
是MySQL
TIME
字段(不是DATETIME
)。我需要一种定期“扫描”表以查看表中时间范围是否重叠的方法。如果有来自10:00-11:00
和的其他事件10:30-11:30
,我想提醒您时间重叠。
真的没什么好想的,我只想知道是否存在重叠。
我将使用PHP执行此操作。
这是我很多年前找到答案的查询模式:
SELECT *
FROM mytable a
JOIN mytable b on a.starttime <= b.endtime
and a.endtime >= b.starttime
and a.name != b.name; -- ideally, this would compare a "key" column, eg id
要找到“任何重叠”,您可以将时间范围的 相对 两端彼此进行比较。我必须掏出笔和纸,画出相邻的范围,以便意识到边缘情况归结为这种比较。
如果要防止任何行重叠,请将此查询的变体放入触发器中:
create trigger mytable_no_overlap
before insert on mytable
for each row
begin
if exists (select * from mytable
where starttime <= new.endtime
and endtime >= new.starttime) then
signal sqlstate '45000' SET MESSAGE_TEXT = 'Overlaps with existing data';
end if;
end;
问题内容: 这个问题已经在这里有了答案 : 8年前关闭。 可能重复: MySQL检查表是否存在而不会引发异常 我的项目中有一个动态mysql查询生成器,可从不同的表创建选择查询。 我需要检查当前处理表是否存在。 假设我的表是table1,table2和table3。我的代码是这样的: 我该如何进行检查(请告诉我最简单的方法)。 问题答案: 更新的mysqli版本: 原始mysql版本: 从PHP
问题内容: 我有一个嵌入了数据库的桌面应用程序。当我执行程序时,我需要检查特定的表是否存在,如果不存在则创建它。 给我的数据库一个名为conn的Connection对象,我该如何检查呢? 问题答案: 您可以使用可用的元数据: 有关更多详细信息,请参见此处。还要注意JavaDoc中的注意事项。
我创建了一个事件。现在我想检查它们是否重叠。我在数据库中以日期格式存储了开始时间和结束时间。 现在我想检查事件的时间是否重叠。为此,我想获取所有事件start Time和endTime,从日期检索小时和分钟,然后将小时和分钟与当前小时和分钟进行比较。 日期格式如下:df=新的SimpleDateFormat(“E-MMM-dd-HH:mm:ss-zz-yyyy”); 我第一次尝试通过查询比较两个日
问题内容: 我正在使用C#根据bigquery api表端点的响应动态构建查询。我正在尝试计算有效的活动用户,但前提是我必须选择具有的每个表。我的问题确实很简单,有没有一种方法可以检查BigQuery SQL中是否存在表? 问题答案: 有元表叫和 您可以运行如下查询: 该查询的一部分可能看起来并不熟悉。是一个元表,其中包含有关数据集中表的信息。您可以自己使用此元表。例如,查询将返回有关数据集中表的
如果表已经存在,如何检查TarantoolSQL?
我是boto3的新用户,我正在使用DynamoDB。 我浏览了dynamodbapi,没有找到任何方法告诉我是否已经存在一个表。 处理这个问题的最佳方法是什么? 我应该尝试创建一个新表并使用try-catch包装它吗?