今天的时间逻辑以及fix 一个 mysql 程序员错误的习惯
今天的时间逻辑以及fix 一个 mysql 程序员错误的习惯
疯狂的兔子 发表于3年前
今天的时间逻辑以及fix 一个 mysql 程序员错误的习惯
  • 发表于 3年前
  • 阅读 13
  • 收藏 1
  • 点赞 0
  • 评论 0

【腾讯云】如何购买服务器最划算?>>>   

摘要: 今天 如何表示

一个很有趣的SQL

SELECT  count(1) from b2c_order  
 WHERE
 b2c_order.create_time >= '2012-09-03 00:00:00' AND b2c_order.create_time <= '2012-09-03 23:59:59';

这个SQL不细看感觉不出来问题,可是细看一下,觉得那么别扭,2012-12-03 23:59:59 这个是什么意思?难道,作者想用这个方法来计算当天么?

"今天"的逻辑

询问了一下开发,确证这是一个统计,统计当天的交易数,那么这里就带来了一个问题,“今天”在数学上或者在程序里,定义应该是怎样的?
下面的逻辑:

 >= '2012-09-03 00:00:00'  <= '2012-09-03 23:59:59'

能否表示某一天?

显然,上面的逻辑是有问题的,因为,23:59:59 之后,还有一秒钟是属于今天的。一秒钟,对计算机来说,简直像永远那么漫长,能发生的事情和故事实在是太多了,所以,这个逻辑一定是有问题的,因为它少了一秒,那么应该如何表示今天呢?

一秒的作用

当年利森把巴林银行搞垮,只用了十几毫秒。so,一秒的作用,更关键的是会让人将来在对账、在统计的时候,发生莫名奇妙的事情,而要耗费巨大的精力来检查和修理。

"今天“的正确逻辑

实际上,今天的正确逻辑,无非是这么一句话:”大于等于今天的开始,小于明天的开始“,我们只要利用好开闭区间,就可以很好的、无漏洞的表示”今天“,所以,我只要把逻辑改成下面这样:

 >= '2012-09-03 00:00:00'  < '2012-09-04 00:00:00'

就正确无误了!


共有 人打赏支持
粉丝 30
博文 155
码字总数 100504
×
疯狂的兔子
如果觉得我的文章对您有用,请随意打赏。您的支持将鼓励我继续创作!
* 金额(元)
¥1 ¥5 ¥10 ¥20 其他金额
打赏人
留言
* 支付类型
微信扫码支付
打赏金额:
已支付成功
打赏金额: