如何在Microsoft SQL Server 2014中查询特定时段(如6:15-7:15)的数据?
解决SQL Server中当天指定时段的数据查询问题
核心思路
直接基于时间区间的精确比较筛选数据,逻辑和你在PLC梯形图里的区间判断一致,直观好理解,完全适配SQL Server语法。
单个时段查询示例
比如查询当天6:15:00 至7:15:00的数据:
SELECT * FROM [table] WHERE t_stamp >= CAST(CAST(GETDATE() AS DATE) AS DATETIME) + '06:15:00' AND t_stamp <= CAST(CAST(GETDATE() AS DATE) AS DATETIME) + '07:15:00'
查询当天7:15:01 至8:15:00的数据:
SELECT * FROM [table] WHERE t_stamp >= CAST(CAST(GETDATE() AS DATE) AS DATETIME) + '07:15:01' AND t_stamp <= CAST(CAST(GETDATE() AS DATE) AS DATETIME) + '08:15:00'
多个时段合并查询
如果要一次性获取多个时段的数据,用OR连接多个区间条件即可:
SELECT * FROM [table] WHERE -- 第一个时段:6:15-7:15 (t_stamp >= CAST(CAST(GETDATE() AS DATE) AS DATETIME) + '06:15:00' AND t_stamp <= CAST(CAST(GETDATE() AS DATE) AS DATETIME) + '07:15:00') OR -- 第二个时段:7:15:01-8:15 (t_stamp >= CAST(CAST(GETDATE() AS DATE) AS DATETIME) + '07:15:01' AND t_stamp <= CAST(CAST(GETDATE() AS DATE) AS DATETIME) + '08:15:00')
关键逻辑解释
CAST(GETDATE() AS DATE):提取当前系统的纯日期(仅年-月-日,不带时分秒)- 将纯日期转为
DATETIME类型后,加上具体时分秒字符串,就能得到当天的精确起始/结束时间点(比如今天的6:15就是2024-05-20 06:15:00) - 用
>=和<=直接判断t_stamp是否落在目标区间,完美匹配你需要的精确时段,解决了原语句只能按整小时筛选的问题
补充说明
你之前看到的unix_timestamp是MySQL等其他数据库的专属函数,SQL Server不支持,无需尝试。上面的时间区间方法是SQL Server处理这类需求最直接、易上手的方式,和你熟悉的PLC梯形图逻辑思路完全对齐。
内容的提问来源于stack exchange,提问作者DeucesAx
相关产品推荐
相关产品推荐

