0

尝试从表中的时间戳列中选择唯一年份,但到目前为止不成功。大约有 50 行,它们之间有 3 个不同的年份。

$getyears = $dbh->prepare("SELECT DISTINCT DATE_FORMAT(timestamp, '%Y') as timestamp FROM press");
$getyears->execute();
$years = $getyears->fetchAll(PDO::FETCH_ASSOC);

print_r($years);

结果是:

Array ( [0] => Array ( [timestamp] => ) )

应该有三个不同的年份。

我不是 MySQL 专家,对 PDO 也很陌生。看不到我哪里出错了。

更新

timestamp用反引号括起来,但结果仍然相同。

打印print_r($getyears->errorInfo());返回的错误信息:

Array ( [0] => 00000 [1] => [2] => )

timestamp是一个int类型字段,经过仔细检查,整个表肯定包含 3 个唯一年份。

更新 2

更多信息:

所有行在timestamp字段 ( int(11)) 中都包含以下内容之一:

1230587568
1262123568
1356817968
4

1 回答 1

1

您可以显示错误

print_r($dbh->errorInfo());

或者

print_r($getyears->errorInfo());

根据Reserved Words,允许使用不timestamp带引号的。虽然,无论如何用反引号引用它是一个好习惯。

date_format适用于date类型而不是int类型。如果timestamp是 unix 时间戳(自 1970-01-01 以来的秒数),您可以尝试from_unixtime改用。

于 2012-12-29T22:44:08.773 回答