Codeigniter 仅返回 MySQL 日期时间字段的年份


codeigniter only returning year of mysql datetime field

我正在尝试使用codeigniter对一些MySQL数据进行简单的SELECT

//setup query
$this->db->select('personId, birthday')
    ->from('person')
    ->where('personId', $personId)
    ->limit(1);
    //execute query
    $query = $this->db->get();
    //fetch result
    $result = $query->row_array();
        //found person
        if(!empty($result)){
            echo $result['birthday'];
        }
    }
}

birthday字段在 mySQL 中作为DATE类型。 数据库中的值和在phpMyAdmin中看到的值是'1980-05-21',但上面代码中回显的值只是'1980',只是年份。

我尝试将 mysql 类型切换到 DATETIME但这没有任何作用。

我的猜测是它与Codeigniter有关,甚至可能与结果中的"-"字符有关。 这个问题快把我逼疯了! 有人有这个问题,知道如何解决吗?

我复制了你的代码,一切正常,可能是你的php.ini中的东西。设置 date.timezone 并检查区域设置(如果您有 intl 扩展名)。出于测试目的,请在回显$result后尝试die() ...也许它之后正在发生一些事情。我用CodeIgniter 2.1.3版本测试你的代码。

这不是对您的问题的直接回答,因为我不确定您对date的问题,但似乎您可以选择更改字段,因为您已经更改了一次(如您的问题中所述)因此,在我的 opnion 中,使用 timestampdate/datetime更好,这里有一个很好的答案, 所以,我认为如果您将类型更改为 timestamp它可能会解决问题,并且很容易处理timestamp上的任何类型的操作,此外,CodeIgniter有一个日期助手可以轻松处理日期,但这只是一个选项,您也可以使用 PHP 的内置函数。

这只是一种意见,我更喜欢timestamp而不是date/datetime,至少,我不需要在yyyy-mm-dddd-mm-yyyy之间交换顺序,相反,我可以使用类似date('d-m-Y', $timestamp);的东西来创建它 timestamp.