19

可能重复:
日期时间与时间戳?

我有一个 Mysql 表,其中有一列add_date。它跟踪记录添加到数据库的日期/时间。

基于此表的查询:

  1. 以以下格式显示添加记录的时间:2 小时前、4 周前、1 年前等
  2. 允许用户搜索任何日/月/年插入的记录。因此,可能允许用户选择仅查看 2009 年插入的记录。

在这种情况下哪个会更好-unix时间戳或日期时间?

现在我同时使用两者,但由于随着时间的推移表将有数百万条记录,因此拥有两列可能会影响数据库的大小。

Unix 时间戳似乎更适合2 hours在 PHP 中转换为以前的格式,而且它与时区无关。但是 datetime 具有更好的可读性,并且查询特定的日期/时间/年份似乎更容易。

你的建议?

4

3 回答 3

16

当您有选择时,我会说选择 mySQL 日期。

  • 您不必处理日期范围问题

  • BETWEEN(), DATE_ADD您可以使用 mySQL 的日期函数(等)轻松查询时间跨度

  • 与日期相关的查询会快得多,尤其是当您有数百万条记录时,因为您不必使用FROM_UNIXTIME()在大型查询中可能会很昂贵的查询

  • 必要时将 DATE 字段转换为 UNIX 时间戳是小菜一碟。

于 2010-06-01T09:27:10.310 回答
5

我会选择 mysql 格式,只是因为 mysql 有很多 datetime 函数,使用它和时间戳会花费你另一个转换。

但由于随着时间的推移,该表将拥有数百万条记录,因此拥有两列可能会影响数据库的大小。

天啊。
您真的担心额外增加 4 兆字节的空间吗?

于 2010-06-01T09:25:21.747 回答
5

from_unixtime()您可以通过使用 unix 时间戳和 MySQL函数在需要的地方将结果转换为日期时间格式来获得两全其美的效果。

于 2010-06-01T09:25:56.207 回答