如何编写指定时间范围的SQL查询统计站点访问尝试次数
SQL查询返回0结果的排查方案和正确写法
- 时间范围边界错误
绝大多数这类问题都是区间设置失误导致:如果写BETWEEN '2017-09-05 11:36:00' AND '2017-09-05 11:37:00'实际只覆盖1分钟,且带毫秒的11:37:00.xxx记录会被直接排除。请使用兼容性更强的半开区间写法,完整覆盖整整两分钟的所有数据:SELECT COUNT(*) AS 访问尝试次数 FROM 你的业务表名 WHERE 时间字段 >= '2017-09-05 11:36:00' AND 时间字段 < '2017-09-05 11:38:00' - 时间格式/类型不匹配
先执行简易查询确认库中时间存储格式:SELECT 时间字段 FROM 你的业务表名 LIMIT 10- 如果时间字段是Unix时间戳(数值类型),需要先把时间范围转成对应数值再比较,以MySQL为例:
SELECT COUNT(*) AS 访问尝试次数 FROM 你的业务表名 WHERE 时间字段 >= UNIX_TIMESTAMP('2017-09-05 11:36:00') AND 时间字段 < UNIX_TIMESTAMP('2017-09-05 11:38:00') - 如果库中存储的是带时区的时间,且你输入的是本地时间,需要对齐时区:比如库中存UTC时间、你用的是东八区时间的话,把时间范围减8小时即可。
- 如果时间字段是Unix时间戳(数值类型),需要先把时间范围转成对应数值再比较,以MySQL为例:
- 低级书写错误
检查是否出现年份、月份、日期写错的问题,比如把2017写成2018、9月写成08等。
内容的提问来源于stack exchange,提问作者Brynnen Bargerhuff
相关产品推荐
相关产品推荐

