我正在使用PHP 5.4.6和MySQL 5.5.29,将UNIX时间戳转换为MYSQL日期时间以及反向转换时遇到了问题。MySQL和PHP都运行在同一台本地机器上。
我有一个简单的MySQL表格。
CREATE TABLE Entry(
id SERIAL PRIMARY KEY,
created DATETIME NOT NULL);
我使用php PDO和mysql NOW()来插入数据,这很好用,正确的日期时间被存储在数据库中。
我的计划是在客户端(服务器端使用php和mysql)上使用Unix时间戳。
因此,我想向客户端提供Unix时间戳。因此,我使用MySql的UNIX_TIMESTAMP()函数在查询中直接将其转换。
因此,示例查询看起来像这样:
SELECT created, UNIX_TIMESTAMP(created) AS TS FROM Entry
结果: created = 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);
}
当我调用toDateTime(1360871255)时,会返回2013-02-14 20:02:35,这并不是原始的日期时间。
我知道在MYSQL中使用1360871255时,不需要将其格式化为Y-m-d H:m:s,但是1360871255似乎不是我预期的时间(而MYSQL UNIX_TIMESTAMP返回的是它)。
我想做的是一个简单的查询,显示早于特定时间戳的条目,类似于以下这样简单的语句:
SELECT * FROM Entry WHERE created < 1360871255
但正如我之前所提到的,查询结果并不是预期的,因为1360871255似乎不是正确的时间。
在php中,我没有为mysql连接指定任何特殊的时区。
有什么建议吗?