Sql 使用单独的日期/时间字段基于其他记录选择记录

Sql 使用单独的日期/时间字段基于其他记录选择记录,sql,Sql,我有一个数据库,在不同的字段中存储日期和时间。我需要选择在这些事件发生的日期和时间的+90分钟和-90分钟内发生的所有记录 我能够以我需要的格式完成所有工作 SELECT UFV1.USR_DATE ,UFV1.USR_TIME ,LEFT(CAST(DATEADD(minute, -90, UFV1.USR_TIME) AS TIME),8) AS MIN_TIME ,LEFT(CAST(DATEADD(minute, +90, UFV1.USR_TIME) AS TIME),8)AS MAX

我有一个数据库,在不同的字段中存储日期和时间。我需要选择在这些事件发生的日期和时间的+90分钟和-90分钟内发生的所有记录

我能够以我需要的格式完成所有工作

SELECT UFV1.USR_DATE
,UFV1.USR_TIME
,LEFT(CAST(DATEADD(minute, -90, UFV1.USR_TIME) AS TIME),8) AS MIN_TIME
,LEFT(CAST(DATEADD(minute, +90, UFV1.USR_TIME) AS TIME),8)AS MAX_TIME
FROM USR_Y_FACILITY_VISIT UFV1

WHERE UFV1.MASTER_CUSTOMER_ID = '2'

ORDER BY UFV1.USR_DATE, UFV1.USR_TIME

我陷入困境的地方是,我需要构建一个查询,从每一行中获取这个信息(基本上是最小值/最大值),然后根据它选择同一个表中的所有信息。感谢您的帮助,我完全不知道下一步该怎么办。

将表的关键字段以及相应的GROUP BY子句添加到您的查询中。然后,以sun查询的形式,以以下格式查询与该查询关联的数据表:

SELECT * 
FROM T
JOIN ( SELECT * ... ) U 
     ON U.key = T.key 
    AND T.dateTime BETWEENU.MinDateTime AND U.MaxDateTime

如果我正确理解了一个问题,那么这个请求对你来说是必要的

SELECT *
FROM USR_Y_FACILITY_VISIT UFV1
WHERE EXISTS (
              SELECT 1
              FROM USR_Y_FACILITY_VISIT UFV2
              WHERE UFV2.MASTER_CUSTOMER_ID = '2'
                AND UFV1.USR_DATE = UFV2.USR_DATE
                AND UFV1.USR_TIME BETWEEN CAST(DATEADD(minute, -90, UFV2.USR_TIME) AS time) 
                                    AND CAST(DATEADD(minute, 90, UFV2.USR_TIME) AS time) 
              )

我不确定单独保存日期和时间是否是个好主意。有什么特别的理由这样储存吗?不管怎样,按照商业规则,如果时间是上午12:30会发生什么?减去90分钟后是否变成前一天的晚上11点?还是变成了午夜12:00?你是否担心连续两次跨越边界的90分钟?如果一条记录显示为与它自己比较,因为我们不知道有多少条记录具有完全相同的日期/时间组合,这会是一个问题吗?您是否有任何机会在表中有任何唯一的键?不幸的是,系统不是由我自己设计的。这里的时间永远不会交叉日期通常是4-9或10我必须交叉上午/下午,但它存储在24小时时钟时间中这里是一个示例USR_日期USR_时间最小时间最大时间2012-07-31 00:00:00.000 21:33:58 20:03:58 23:03:58 2012-07-31 00:00.000 21:35:23 20:05:23 2012-08-0200:00:00.000 19:23:31 17:53:31 20:53:31 2012-08-02 00:00:00.000 21:04:59 19:34:59 2012-08-07 00:00.000 20:57:56 19:27:56 22:27:56 2012-08-10 00:00:00.000 21:17:40 19:47:40很抱歉,示例的格式不好,但我编辑时它看起来是正确的描述。@PM:这可能发生,但我没有看到。你能告诉我我在哪里吗?1你假设OP有权添加列。2您假设有dateTime字段,而OP明确表示他/她有单独的日期和时间字段。@PM:您误解了我的评论和原始帖子。我特别要说的是添加到您的查询中。2 OP似乎已经正确地组合了日期和时间字段,并询问如何从那里开始。同样,是什么让你认为关键字段存在?OP没有合并日期和时间-s/he只是减去/增加分钟。他/她根本没有在表达式中包含日期字段。