Press "Enter" to skip to content

具体场景下MySQL中用“时间戳”存储时间的问题

内容目录

今天看二哥写的关于数据库中时间戳存储的问题,觉得有必要思考下这个问题,之前自己也是认为用int型将时间存储在数据库是个不错的选择,但是我们往往理想化或者没有考虑特殊情景。

假如有这么一个场景:一个商城网站要查询出2014年2月产生的所有订单,那么,如果我们使用的是Unix时间戳来存储时间的话,我们就必须走以下几个步骤了:
(1)先算一下2014-2-1-00:00:00的时间戳;
(2)算一下2014年的2月有几天;
(3)再算一下2月最后一天24:00:00的时间戳;
(4)最后再去组合出一个SQL语句来查询这个时间段的所有订单。

呵呵,看起来是有点小复杂的,那么当我们使用2014-02-14这样的格式进行存储时,同样的场景我们我们需要怎么去查询呢?
只需一个步骤:
SELECT * FROM table_order WHERE Year(order_date) = 2014 AND Month(order_date) = 2;
一条SQL语句搞定。 而且使用MySQL内置的函数进行处理,效率比在PHP中使用字符串函数、数值函数等进行处理更为高效。

结论:我们需要不断的吸取新的知识,根据应用场景,选择更为合适的工具,来帮助我们的发展!

2 Comments

  1. Leon
    Leon 2018年6月8日

    时间戳转换为日期然后,再使用 year month 似乎也没毛病。

    • chenjie
      chenjie 2018年6月13日

      是的,也是可以的,在大多数情况下还是日期格式更加直观。

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注