特定时间点的MySQL字段类型

时间:2013-01-04 00:18:32

标签: php mysql unix-timestamp fieldtype

我需要一个可以存储特定日期的MySQL列。我正在使用的应用程序为我提供了一个UNIX时间戳(自1970年1月1日以来经过的秒数)。我需要将这些信息存储在数据库中,然后以特定的方式检索它,见下文。

在存储此日期之后,我需要能够根据此时间戳查询数据库。例如,我需要能够检索时间戳日为第4行的所有行。

那么我的问题是如何将这个日期存储在最容易执行查询的地方? DATETIME和TIMESTAMP对我来说似乎是有效的选项,但我似乎无法弄清楚如何处理查询。我不期待将时间戳存储为整数,因为它不允许我创建这样的查询,我不得不将该工作卸载到PHP。

如果有帮助我需要在UTC时间内处理这些时间戳。我知道TIMESTAMP将为我转换到PST(我当地时间),所以我必须在MySQL或PHP中转换回UTC。 (至少我认为我必须这样做)

请帮忙!

2 个答案:

答案 0 :(得分:1)

如果我是你,我会将这些数据保存为DateTime。原因是

  • 我们自己的眼睛可以读取记录。例如2013-01-04 00:25:12优于1357259112
  • 不必使用像FROM_UNIXTIME那样的任何转换函数,我认为它会杀死索引。因此,使用datedatetime要好得多,因为您可以使用索引,因为您可以使用=BETWEEN
  • 直接搜索值

答案 1 :(得分:0)

将其存储为integer,然后使用MySQL的FROM_UNIXTIME()函数,如下所示:

SELECT
    `field_list`
FROM
    `table_name`
WHERE
    FROM_UNIXTIME(`the_date`, '%d') = 4;