如何在指定时间范围内筛选数据库中的整点timestamp数据
筛选整点Timestamp数据的SQL方案
MySQL/MariaDB
- 直接判断分钟数是否为0,搭配时间范围筛选:
SELECT * FROM your_table WHERE timestamp_column BETWEEN '2024-01-01 09:00:00' AND '2024-01-01 13:00:00' AND MINUTE(timestamp_column) = 0;
也可以用格式匹配的方式:
SELECT * FROM your_table WHERE timestamp_column BETWEEN '2024-01-01 09:00:00' AND '2024-01-01 13:00:00' AND DATE_FORMAT(timestamp_column, '%i') = '00';
PostgreSQL
- 提取分钟数判断是否为0:
SELECT * FROM your_table WHERE timestamp_column >= '2024-01-01 09:00:00' AND timestamp_column <= '2024-01-01 13:00:00' AND EXTRACT(MINUTE FROM timestamp_column) = 0;
或者把时间截断到小时,和原时间对比(更严谨,能过滤秒数不为0的情况):
SELECT * FROM your_table WHERE timestamp_column BETWEEN '2024-01-01 09:00:00' AND '2024-01-01 13:00:00' AND DATE_TRUNC('hour', timestamp_column) = timestamp_column;
SQL Server
- 通过日期函数获取分钟数筛选:
SELECT * FROM your_table WHERE timestamp_column BETWEEN '2024-01-01 09:00:00' AND '2024-01-01 13:00:00' AND DATEPART(MINUTE, timestamp_column) = 0;
也可以生成对应整点时间后对比:
SELECT * FROM your_table WHERE timestamp_column BETWEEN '2024-01-01 09:00:00' AND '2024-01-01 13:00:00' AND DATEADD(HOUR, DATEDIFF(HOUR, 0, timestamp_column), 0) = timestamp_column;
注意事项
- 替换
your_table为你的实际表名,timestamp_column为存储时间的字段名 - 时间范围根据需求调整,确保包含你需要的整点时段
- 不管timestamp是否带秒数,只要分钟为0,上述语句都能精准筛选出整点数据
内容的提问来源于stack exchange,提问作者clueless programmer
相关产品推荐
相关产品推荐

