Sql 查询以查找日期不为';t重叠
有人能帮我创建一个查询,它将填充尚未预订的DJ列表 我的用户将选择开始日期(和时间)和结束日期(和时间),然后单击按钮选择DJ 我只希望那些在这些时段之间可用的DJ出现在列表中 下面是涉及的两张表 列表框中我只需要DJ号码和DJ姓名 到目前为止我有这个。。。但它不起作用:Sql 查询以查找日期不为';t重叠,sql,vba,ms-access,ms-access-2013,Sql,Vba,Ms Access,Ms Access 2013,有人能帮我创建一个查询,它将填充尚未预订的DJ列表 我的用户将选择开始日期(和时间)和结束日期(和时间),然后单击按钮选择DJ 我只希望那些在这些时段之间可用的DJ出现在列表中 下面是涉及的两张表 列表框中我只需要DJ号码和DJ姓名 到目前为止我有这个。。。但它不起作用: SELECT tblDJ.DJ_No AS [DJ ID], tblDJ.DJ_Name AS Name FROM tblDJ WHERE (((tblDJ.[DJ_No]) Not In (SELECT tblBooki
SELECT tblDJ.DJ_No AS [DJ ID], tblDJ.DJ_Name AS Name FROM tblDJ
WHERE (((tblDJ.[DJ_No]) Not In
(SELECT tblBooking.[FK_DJ_No]
FROM tblBooking
WHERE ( (tblBooking.End_Date) >= 01-04-2020 19:30:00 )))) ....etc....
我现在只是在这里输入一个日期,但很明显,一旦实现,它将存储在一个变量中
感谢SQL中的日期需要包装在两个
#
之间,以便MS Access将其识别为日期:
select *
from tblDJ
where DJ_No not in
(
select FK_DJ_No
from tblBooking
where End_Date >= #2020-04-01 19:30:00#
)
除此之外,您可以进行查询。SQL中的日期需要在两个
#
之间进行包装,以便MS Access将其识别为日期:
select *
from tblDJ
where DJ_No not in
(
select FK_DJ_No
from tblBooking
where End_Date >= #2020-04-01 19:30:00#
)
除此之外,您的查询将起作用。实现两个间隔的重叠将如下所示:
1st_start_date <= 2nd_end_date and 1st_end_date >= 2nd_start_date
您只需要用您的值替换#开始日期#
和#结束日期#
这是可行的,因为存在以下假设:
这似乎是合乎逻辑的,对吗?实现两个间隔的重叠将如下所示:
1st_start_date <= 2nd_end_date and 1st_end_date >= 2nd_start_date
您只需要用您的值替换#开始日期#
和#结束日期#
这是可行的,因为存在以下假设:
这似乎合乎逻辑,对吗?嗨。这就是我到目前为止所有的SQL代码。减去“……等……”。。。。。。如果我运行它,我会得到“查询表达式中的语法错误”(如果我删除时间(19:30:00),它似乎会停止)…我希望它不包括DJ D00057,因为他们有一个预订,其结束日期晚于2020年4月1日,但这与我输入的日期没有任何区别。对不起,我的含糊不清。这是我到目前为止所有的SQL代码。减去“…等…如果我运行它,我会在查询表达式中得到”语法错误“(如果我取消时间(19:30:00),它似乎会停止)…我希望它不包括DJ D00057,因为他们有一个预订,其结束日期晚于2020年4月1日,但我输入的日期没有任何区别。抱歉我的含糊不清谢谢-这是我迄今为止最接近的事情-但是,我不能同意这些假设。-假设从2001/01开始,DJ 1号有预订/01 20:00和2001/01/02结束时的01:00-如果有人试图从2001/01/01-19:00和2001/01/01结束时的23:30开始预订,我需要它不显示DJ 1号可用。我如何实现这一点?如果有一种方式可以在活动结束后开始,则数据验证中存在一些严重问题。否-我必须验证p请注意——但有人可以预订一个新的活动,它的开始日期比现有的预订日期晚(即使只有几分钟)——但仍然重叠(如果你明白我的意思的话?)但是上面的代码似乎允许这种情况发生?不,不允许。您要预订的活动开始日期必须早于现有预订的结束日期,因此这将取消预订。谢谢-这是我迄今为止最接近的事情-但是,我不能同意这些假设。-假设从2001/01/01 20:00开始预订dj 1号d在2001/01/02年1:00结束-如果有人试图从2001/01/01-19:00到2001/01/01 23:30结束预订,我需要它不显示DJ 1号可用。我如何实现这一点?如果有一种方法可以让活动在结束后开始,则数据验证中存在一些严重问题。不-我有验证来防止这种情况发生-但有人可以预订一个新的活动,它的开始日期比现有的预订日期晚(即使只有几分钟)-但仍然重叠-(如果你明白我的意思吗?)但是上面的代码似乎允许这种情况发生?不,不允许。您要预订的活动开始日期必须早于现有预订的结束日期,因此这将使预订无效。