如何使用TIMESTAMPDIFF筛选时长小于1小时且指定时段的表数据
解决你的SQL筛选问题
我来帮你调整SQL语句,让它准确筛选出时长小于1小时且在2018年内的条目(也就是你要的example 2数据)。
首先先指出原SQL里的两个问题:
- 字段名拼写错误:你写的
ende应该是表结构里的end字段 - 缺少时长小于1小时的核心筛选条件
以下是修正后的完整SQL语句:
SELECT start, `end`, TIMESTAMPDIFF(HOUR, `start`, `end`) AS duration_hours FROM table1 WHERE start >= '2018-01-01' AND `end` <= '2018-12-31' AND TIMESTAMPDIFF(HOUR, `start`, `end`) < 1;
关键说明:
- 修正字段名:把错误的
ende改成end,并且用反引号`包裹,因为end是SQL的保留关键字,避免语法冲突 - 时长筛选条件:
TIMESTAMPDIFF(HOUR, start, end) < 1会排除掉时长≥1小时的条目(比如example 1的2小时时长就会被过滤),只保留像example 2这种不足1小时的记录 - 时间段范围:保留了你原本的2018全年筛选条件,确保只处理该年份内的事件
如果想要更精准的分钟级判断(比如刚好60分钟的情况也排除),可以把时长条件换成分钟计算:
AND TIMESTAMPDIFF(MINUTE, `start`, `end`) < 60
这样执行后就只会返回example 2这条数据了。
内容的提问来源于stack exchange,提问作者user9554121
相关产品推荐
相关产品推荐

