如何筛选SQL中TIMESTAMP字段小时值在09:00:00至21:00:00间的数据
筛选时间范围在09:00:00到21:00:00之间的数据行
根据你提供的数据表结构,以下是不同数据库环境下的SQL查询语句,用于筛选timestamp_full字段时间部分处于09:00:00到21:00:00之间的行:
MySQL/MariaDB
使用TIME()函数提取时间部分进行范围判断:
SELECT * FROM your_table_name WHERE TIME(timestamp_full) BETWEEN '09:00:00' AND '21:00:00';
该语句会包含timestamp_full为09:00:00和21:00:00的行,排除08:30:00、21:20:00这类不在区间内的记录。
PostgreSQL
有两种常用写法:
- 提取小时值进行判断:
SELECT * FROM your_table_name WHERE EXTRACT(HOUR FROM timestamp_full) BETWEEN 9 AND 21;
- 转换为时间类型后比较:
SELECT * FROM your_table_name WHERE CAST(timestamp_full AS TIME) BETWEEN '09:00:00' AND '21:00:00';
SQL Server
通过CONVERT()函数获取时间部分:
SELECT * FROM your_table_name WHERE CONVERT(TIME, timestamp_full) BETWEEN '09:00:00' AND '21:00:00';
注意事项
如果需要排除21:00:00这个端点,可以将条件调整为:
-- 以MySQL为例 SELECT * FROM your_table_name WHERE TIME(timestamp_full) >= '09:00:00' AND TIME(timestamp_full) < '21:00:01';
内容的提问来源于stack exchange,提问作者swbergmann
相关产品推荐
相关产品推荐

