PHP-MYSQL:将Unix时间戳转换为DateTime,反之亦然
im使用php 5.4.6和MySQL 5.5.29,通过将UNIX TIMESTAMP转换为MYSQL DATETIME,反之亦然。Mysql 和 php wun 在同一台本地机器上。
我有一个简单的 mysql 表
CREATE TABLE Entry(
id SERIAL PRIMARY KEY,
created DATETIME NOT NULL);
要插入数据,我使用php PDO和mysql NOW()。这工作正常,正确的日期时间存储在数据库中。
我的计划是在客户端使用unix时间戳(在服务器端使用php和mysql)。
所以我想向我的客户提供unix时间戳。因此,我使用MySql UNIX_TIMESTAMP()函数直接在查询中转换它。
因此,示例查询如下所示:
SELECT created, UNIX_TIMESTAMP(created) AS TS FROM Entry
结果:已创建 = 2013-02-14 20:47:35 TS = 1360871255
所以现在我想做另一种方式,我传递一个UNIX时间戳,并希望将其与数据库中的条目进行比较。不幸的是,我无法编写有效的PHP脚本。我不知道为什么,但是当我将相同的时间戳(1360871255)传递给PHP时,我没有得到2013-02-14 20:47:35使用此方法:
public static function toDateTime($unixTimestamp){
return date("Y-m-d H:m:s", $unixTimestamp);
}
当我调用DateTime(1360871255)时,将返回2013-02-14 20:02:35,这不是原始的日期时间。
我知道,我不需要将1360871255格式化为Y-m-d H:m:s才能在MYSQL中使用它,但是1360871255似乎不是我期望的时间(MYSQL UNIX_TIMESTAMP已经返回)。
我想做的是一个简单的查询,它向我显示早于某个时间戳的条目,如下所示:
SELECT * FROM Entry WHERE created < 1360871255
但正如我之前提到的,查询结果不是预期的,因为1360871255似乎不是正确的时间。
我没有为php中的mysql连接指定任何特殊的时区。
有什么建议吗?