codeigniter只返回mysql datetime字段的年份

时间:2013-11-07 21:02:00

标签: php mysql codeigniter datetime

我正在尝试使用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有关,甚至可能与结果中的' - '字符有关。这个问题让我抓狂!有谁有这个问题,并知道如何解决它?

2 个答案:

答案 0 :(得分:0)

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

答案 1 :(得分:0)

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

这只是一种意见,我更喜欢timestamp而不是date/datetime,至少,我不需要在yyyy-mm-dddd-mm-yyyy之间交换订单,而是我可以使用date('d-m-Y', $timestamp);中的timestamp等内容创建它。