即时通讯使用PHP 5.4.6和MySQL 5.5.29,我将UNIX TIMESTAMP转换为MYSQL DATETIME,反之亦然。 Mysql和php wun在同一台本地机器上。PHP-MYSQL:将Unix时间戳转换为DateTime,反之亦然
我有一个简单的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年2月14日二十时47分35秒 TS = 1360871255
所以现在我想要做的换句话说,我传递了一个UNIX时间戳,并希望将其与数据库中的条目进行比较。不幸的是我不能写一个可行的PHP脚本。我不知道为什么,但是当我米传递相同的时间戳(1360871255)到PHP我不同意这种方法得到2013年2月14日二十时47分35秒:
public static function toDateTime($unixTimestamp){
return date("Y-m-d H:m:s", $unixTimestamp);
}
当我打电话toDateTime( 1360871255)将返回2013-02-14 20:02:35这不是原来的DateTime。
我知道,我不需要将1360871255格式化为Y-m-d H:m:s,以便在MYSQL中使用它,但1360871255似乎不是我期望的时间(并且MYSQL UNIX_TIMESTAMP已返回)。
我想要做的是一个简单的查询,显示我的条目是超过一定日期和时间旧,简单的东西是这样的:
SELECT * FROM Entry WHERE created < 1360871255
但正如我之前提到的,查询结果是没有预期,因为1360871255似乎不是正确的时间。
我没有在php中为mysql连接指定任何特殊的时区。
有什么建议吗?
该死的,你的权利... omg ...即时通讯如此愚蠢 – sockeqwe 2013-02-14 20:50:13
@sockeqwe - 你并不愚蠢。你只是俯视它。它发生了。 – Greeso 2017-08-10 17:33:58