Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/sql-server-2008/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql server 2008 时间范围的TSql查询_Sql Server 2008_Tsql - Fatal编程技术网

Sql server 2008 时间范围的TSql查询

Sql server 2008 时间范围的TSql查询,sql-server-2008,tsql,Sql Server 2008,Tsql,我有一个简单的表格,里面有很多申请者,他们有他们的开始时间、结束时间和日期数据。我想知道在某个时间范围内,谁可以在某个特定日期工作 下表显示了“开始日期”和“结束日期”列告诉我们他们是为该日期/时间预订的 AppID StartTime EndTime Date H12 8:00 13:00 12/1/2013 H12 14:00 16:00

我有一个简单的表格,里面有很多申请者,他们有他们的开始时间、结束时间和日期数据。我想知道在某个时间范围内,谁可以在某个特定日期工作

下表显示了“开始日期”和“结束日期”列告诉我们他们是为该日期/时间预订的

AppID        StartTime         EndTime         Date
H12            8:00             13:00          12/1/2013
H12            14:00            16:00          12/1/2013
H12            19:00            21:00          12/1/2013
H14            17:00            18:00          12/1/2013
H13            14:00            16:00          12/1/2013
H13            11:00            15:00          12/2/2013
H15            8:00             13:00          12/2/2013

那么,在上表中,我如何编写一个查询,告诉我2013年12月1日17:00-18:00之间不工作的所有应用程序?因此,基本上它应该返回H12和H13,因为它在2013年12月1日下午17-18点的时间段在表中不可用。

此查询返回在特定日期的时间范围内不工作的应用程序ID

选择 [AppID]=免费应用程序 从表_name t1 其中AppID不在-不在时间范围内繁忙的应用程序集中 选择AppID 从表_name t2
其中StartTime>='17:00'和StartTime='17:00'以及EndTime,您还必须检查日期2013年12月1日,并且您很可能还必须将时间戳用“”括起来。你不觉得吗?谢谢你的打字!关于日期,我真的不知道OP想要什么结果。我不明白你想要什么结果。你说它应该返回H13,但你想要2013年12月1日的应用,这是不一致的。还有,为什么不使用完整的日期时间呢?H13有两个条目。一个是针对2013年12月1日Lucio的,我正在从第三方获取上述格式的数据,我想我可以编写一个自定义脚本,将日期列附加到StartTime和EndTime,但我不认为这真的有帮助吗?H13,上面有多个不同日期的条目。2013年1月12日的17:00-18:00之间没有任何开始/结束时间。如果应用程序在某一天启动,而在另一天完成,该怎么办?你将谁存储该事件?不,它必须在同一天开始和结束…我只想返回开始时间和结束时间为空/可用的日期的结果。用简单的英语…通过查询告诉我2013年1月12日下午17点到18点谁有空。我试图在我们说话时提出质疑。
;WITH t1 as
(
SELECT DISTINCT AppID 
FROM <table>
WHERE date = '20130112'
)
SELECT AppID 
FROM t1
WHERE
NOT EXISTS
(SELECT * FROM <table> t2
WHERE t2.STARTTIME < '18:00'
AND t2.ENDTIME > '17:00'
AND t1.AppID = t2.AppID
AND t2.date = '20130112'
)