Mysql Unix时间戳存储?

时间:2011-09-02 01:13:53

标签: php mysql

我在这里遇到了一些问题。我的数据库将unix时间戳存储为字符串2011-09-01 20:22:36,我需要它作为Unix时间戳###########所以我可以使用>来比较它。然后符号。但是我还需要让它自动设置更新时间戳(ON UPDATE CURRENT TIMESTAMP)以及default of the timestamp 这不是真正重要的原因我可以在PHP中这样做,如果我需要

我该怎么做? timestamp现在是日期/时间组合字符串而不是整合,所以我无法比较它?

我的比较字符串是

$sql = sprintf("SELECT nid, field_date_value, field_movie_location_value FROM content_type_mobile_event WHERE updated<'%s'", $vid);

任何人都想知道。

2 个答案:

答案 0 :(得分:2)

您可以将DATETIME列与运算符(例如&gt;)进行比较或者&lt;,所以我看不出是什么问题。例如,您可以这样做:

SELECT *
  FROM table
 WHERE your_column > NOW() - INTERVAL 2 HOUR;

如果确实需要unix时间戳(你不应该,这是PHP用户的坏习惯),你可以使用函数UNIX_TIMESTAMP

SELECT UNIX_TIMESTAMP(your_col)
  FROM table;

您还可以使用FROM_UNIXTIME将unix时间戳转换为有效日期:

SELECT *
  FROM table
 WHERE your_column > FROM_UNIXTIME($data)

如果我真的必须使用unix时间戳,我会使用这个,但大多数情况下,你可以不用。

答案 1 :(得分:2)

使用UNIX_TIMESTAMP() function在查询中转换它。如果必须将它与PHP的Unix时间戳进行比较,最简单的方法就是允许MySQL在其末尾处理列的转换。

$sql = sprintf("SELECT nid, othercols FROM content_type_mobile_event WHERE UNIX_TIMESTAMP(updated) < '%s'", $vid);