为什么MySQL的UNIX_TIMESTAMP在MySQL 5.5中返回奇怪的值,如'%qd'?

时间:2011-11-16 18:21:46

标签: php mysql mysqli unix-timestamp

我正在尝试使用这种方法从PHP中查询MySQL中的时间数据:

SELECT UNIX_TIMESTAMP( DATE_ADD( a.`date_time`, INTERVAL 1 DAY ) ) * 1000 AS time FROM `graph_values` AS a

在运行MySQL 5.0.x的生产服务器上,它会按预期返回一个unix时间戳。但是,在运行MySQL 5.5.x的开发服务器上,它返回一个字符串"%qd"。在本页的MySQL文档中的一些建议之后,我尝试将CAST结果转换为无符号整数:

http://dev.mysql.com/doc/refman/5.5/en/date-and-time-functions.html#function_unix-timestamp

当我将UNIX_TIMESTAMP函数的结果转换为UNSIGNED时,查询返回了另一个字符串"%qu"

所以,显而易见的是,奇数字符串受到返回数据的数据类型的影响,但我从未见过PHP / MySQL的行为方式。

注意:这是使用PHP和mysqli。

有什么建议吗?

1 个答案:

答案 0 :(得分:1)

您是否尝试将结果转换为其他类型(signed int,decimal)?

如果一切都出错 - 您可以使用像FROM_UNIXTIME(UNIX_TIMESTAMP(),'%​​s')这样的东西; 以另一种方式“施放”它。 http://dev.mysql.com/doc/refman/5.5/en/date-and-time-functions.html#function_from-unixtime

虽然不是我希望在我的生产代码中拥有的东西......