基于#tmpFrames时间范围关联Audit表创建临时表的SQL实现问询
SQL 实现方案
核心逻辑是通过非等值关联匹配操作日志的访问时间与时间区间表的对应时段,直接生成目标临时表即可。
参考代码(适配SQL Server等支持临时表的数据库)
-- 生成匹配结果并写入新临时表#AuditFrameResult SELECT a.ID, a.AccessedDTTM, f.Start_Day, f.End_Day, f.Frameid INTO #AuditFrameResult FROM Audit a JOIN #tmpFrames f ON a.AccessedDTTM >= f.Start_Day AND a.AccessedDTTM < f.End_Day
场景适配说明
- 关联条件使用
>=+<而非BETWEEN,可以避免次日6点整的端点数据出现重复匹配或者漏匹配的问题,符合当前跨天时段的匹配需求 - 如果
AccessedDTTM、Start_Day、End_Day字段的数据类型不统一,需要先转换为相同的日期时间类型再做匹配,示例如下:-- 类型转换示例,可根据实际使用的数据库语法调整 ON CAST(a.AccessedDTTM AS DATETIME) >= CAST(f.Start_Day AS DATETIME) AND CAST(a.AccessedDTTM AS DATETIME) < CAST(f.End_Day AS DATETIME) - 如果需要保留未匹配到任何时段的操作日志记录,将
JOIN替换为LEFT JOIN即可,未匹配记录的Start_Day、End_Day、Frameid字段会返回NULL。
内容的提问来源于stack exchange,提问作者SChavan
相关产品推荐
相关产品推荐

