有没有一种简单的方法从PHP中的SQL时间戳获取Unix时间戳?

时间:2009-06-01 21:35:21

标签: php sql mysql timestamp

我的数据库表有一个包含SQL时间戳的列(例如,2009-05-30 19:43:41)。我需要在我的php程序中使用Unix时间戳等效(整数)。

$posts = mysql_query("SELECT * FROM Posts ORDER BY Created DESC");
$array = mysql_fetch_array($posts);
echo $array[Created];

现在回显SQL时间戳,我想要一个Unix时间戳。有一个简单的方法吗?

2 个答案:

答案 0 :(得分:12)

strtotime()将愉快地获取SQL时间戳并将其转换为UNIX时间:

echo strtotime($array['Created']);

请注意,不要在数组键周围使用引号是不好的做法。 According to the docs

  

始终在字符串文字数组索引周围使用引号。例如,$ foo ['bar']是正确的,而$ foo [bar]则不是。

     

这是错误的,但它确实有效。原因是这段代码有一个未定义的常量(bar)而不是一个字符串('bar' - 注意引号)。 PHP可能在将来定义常量,不幸的是,这些代码具有相同的名称。它的工作原理是因为PHP自动将一个裸字符串(一个与任何已知符号不对应的不带引号的字符串)转换为包含裸字符串的字符串。例如,如果没有定义的名为bar的常量,那么PHP将替换字符串'bar'并使用它。

答案 1 :(得分:1)

给定一个常规日期时间字段,您可以使用MySQL函数UNIX_TIMESTAMP()进行查询:

$posts = mysql_query("SELECT *
                             , UNIX_TIMESTAMP(Created)
                      FROM     Posts
                      ORDER BY Created DESC");

您还应该知道PHP函数mysql_fetch_array返回查询结果的两个数字关联键。我发现这是多余的,所以我希望更具体和使用:

$array = mysql_fetch_array($posts, MYSQL_ASSOC);

此外,正如@Paolo Bergantino指出的那样,引用你的回声将是一个很好的决定:

echo $array['Created'];

最后一条评论,您正在使用“SELECT *” - it is worth reading discussion on the pros and cons of "SELECT *" syntax