Warning: curl_exec() has been disabled for security reasons in /pub/host/sunboyu/sunboyu/www/wp-includes/http.php on line 1022
揭发一个写程序以来自己常犯的错误 » Blog Archive 一个程序猿 孙小一,孙小二,PHP,MYSQL,LINUX,APACHE,原创技术,扯淡

揭发一个写程序以来自己常犯的错误

作者 : admin 于 2009-01-06 23:05:24 标签: ,
2009
01-6

从来没发现这个错误,今天突然想到。

数据库中时间,我习惯使用时间戳来保存,取某天或者某小时的数据时,采用 sql 的 between and 方法。

  1. < ?php
  2. #某天的数据
  3. $time[0] = strtotime(date('Y-m-d'));
  4. $time[1] = $time[0]+86400;
  5. $sql = "SELECT * FROM TABLE WHERE TIME BETWEEN $time[0] AND $time[1]"  //伪代码
  6. ?>

乍看这样是没有什么问题的,取某天的时间段。实践证明,在数据时间的分布比较疏松的时候,的确没什么问题,但如果数据分布十分密集,每秒都有若干数据的时候,问题就出来了。根据between的规则,实际的时间就是 $time[1]-$time[0]+1 = 86401

每条语句多算了一秒……汗

解决方案,时间段的计算一律 $time[0] + 60*60*24*x -1

评论列表

  1. 磊哥 Says:

    强,顶一个

发表评论




XHTML:你可以使用的标签: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>

(若看不到验证码,请重新加载页面。)