当前位置: 首页 > news >正文

ACCESS多个时间段查询,只取整点,30分数据

ACCESS多个时间段查询? 比如要求6-26 8:00到18:00; 6-27 9:00到13点

当需要查询多个时间段内符合条件(0 分或 30 分)的记录时,可以使用OR连接多个时间区间条件,同时保留分钟的筛选条件。

优化后的 SQL 查询如下:

SELECT CXRecord.*, Minute([DT]) AS 分钟
FROM CXRecord
WHERE Minute([DT]) IN (0, 30)  -- 保留0分或30分的条件AND (-- 第一个时间段:6-26 8:00到18:00(CXRecord.DT >= #6/26/2024 8:00:00# AND CXRecord.DT <= #6/26/2024 18:00:00#)OR-- 第二个时间段:6-27 9:00到13:00(CXRecord.DT >= #6/27/2024 9:00:00# AND CXRecord.DT <= #6/27/2024 13:00:00#)-- 可继续添加更多时间段,用OR连接)
ORDER BY CXRecord.DT;

优化说明:

  1. 逻辑清晰:用括号明确区分 "分钟条件" 和 "多个时间段条件",层次更清晰
  2. 精确性:使用>=<=替代><,确保边界时间点(如 8:00:00、18:00:00)被包含
  3. 可扩展性:如需添加更多时间段,只需按照相同格式用OR连接即可

如果需要添加更多时间段(例如 6-28 10:00 到 15:00),只需继续添加:

OR
(CXRecord.DT >= #6/28/2024 10:00:00# AND CXRecord.DT <= #6/28/2024 15:00:00#)

这种写法既保留了对 0 分 / 30 分的筛选,又能灵活支持多个不连续的时间区间,且性能表现良好。

你的 SQL 查询已经能够实现基本需求,不过可以从以下几个方面进行优化,提升可读性和执行效率:

优化方案 1:简化条件表达式

去掉不必要的括号,使查询更简洁:

SELECT CXRecord.*, Minute([DT]) AS 分钟
FROM CXRecord
WHERE Minute([DT]) In (0, 30) AND CXRecord.DT > #6/26/2024 14:00:00# AND CXRecord.DT < #6/28/2024 18:00:00#
ORDER BY CXRecord.DT;

优化方案 2:使用日期函数增强可读性

对于日期条件,可以使用DateSerialTimeSerial函数使日期范围更清晰:sql

SELECT CXRecord.*, Minute([DT]) AS 分钟
FROM CXRecord
WHERE Minute([DT]) In (0, 30) AND CXRecord.DT > DateAdd("h", 14, DateSerial(2024, 6, 26))AND CXRecord.DT < DateAdd("h", 18, DateSerial(2024, 6, 28))
ORDER BY CXRecord.DT;

优化方案 3:考虑索引优化(性能提升关键)

如果CXRecord表数据量较大,建议:

  1. DT字段创建索引(可显著提升日期范围查询的速度)
  2. 尽量避免在索引字段上使用函数(如Minute([DT])),因为这会导致索引失效

如果要兼顾索引利用,可以将查询拆分为两个条件的组合(逻辑上等效但可能更高效):

SELECT CXRecord.*, Minute([DT]) AS 分钟
FROM CXRecord
WHERE (CXRecord.DT > #6/26/2024 14:00:00# AND CXRecord.DT < #6/28/2024 18:00:00#)AND (Minute([DT]) = 0 OR Minute([DT]) = 30)
ORDER BY CXRecord.DT;

优化说明:

  1. 可读性:减少冗余括号,使用更规范的时间格式(添加秒数占位符00
  2. 性能:索引对大表查询影响显著,DT字段加索引后,日期范围过滤会更快
  3. 精确性:明确写出00:000:0更规范,避免 Access 解析歧义

选择哪种方案取决于你的数据量大小和维护需求,小表查询用简化版即可,大表查询建议配合索引使用优化方案 3。

http://www.dtcms.com/a/331987.html

相关文章:

  • 第1节:多模态大模型入门(多模态大模型基础教程)
  • 二、Java方法对应练习
  • 护照监伪的方式
  • 为什么Integer缓存-128 ~ 127
  • Linux常用命令(下)
  • 机器学习知识总结
  • PyTorch 2025全解析:从基础到前沿,深度学习框架的技术演进与实战指南
  • 嵌入式开发学习———Linux环境下网络编程学习(一)
  • 一步到位!经纬度批量转CGCS2000坐标系
  • sql的关键字 limit 和offset
  • 开源数据发现平台:Amundsen 快速上手指南
  • LeetCode 37.解数独:回溯法在二维网格中的应用与剪枝策略
  • AAAI论文速递 | Transformer如何听声辨物,实现像素级分割新突破!
  • Mybatis 源码解读-SqlSession 会话源码和Executor SQL操作执行器源码
  • 明远智睿SSD2351:以技术突破重构嵌入式市场格局
  • AI重构职场:岗位消亡与组织重塑
  • 【MATLAB技巧】已知平面上的一些点,拟合得到一个圆的例程,给出最小二乘与非线性迭代两种解法,附下载链接
  • ROS机器人云实践设计十年-2025-2015-
  • 速通 OpenPI 本地部署(远端推理)简易实现 —— WSL2 + Ubuntu 24.04 环境完整指南
  • 会议系统完整流程简版解析:创建会议、加入会议与消息转发
  • 【框架】跨平台开发框架自用整理
  • HTB Busqueda writeup
  • 经典蓝牙(BR/EDR)配对连接全过程:从 HCI 命令到 Profile 交互
  • C++编程学习(第23天)
  • Mybatis 源码解读-Plugin插件源码
  • 数据结构---关于复杂度的基础解析与梳理
  • 2025年缩水甘油苯基醚市场深度全景调研:投资前景分析及趋势预测
  • 机器学习——TF-IDF算法
  • 捉迷藏(BFS)
  • NY219NY220美光固态闪存NY224NY229