我的数据库表有一个包含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时间戳。有一个简单的方法吗?
答案 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。