使用PHP存储从MySQL检索格式化的DATETIME

时间:2018-07-28 09:51:29

标签: php mysql

首先很抱歉,如果有人问过这个问题,我几乎可以肯定会提出,但是我找不到能完全回答我的问题的帖子。

这是使用api插入数据的用户流程。

这是我的桌子。

CREATE TABLE `test` (
         `id` int(11) NOT NULL AUTO_INCREMENT,
         `title` varchar(250) NOT NULL,
         `releaseDate` TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
         `createdDate` TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
         PRIMARY KEY (`id`)
        ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;

将数据发布到api。

# POST /v1/tests
? title=test

这将使用createdDate当前时间戳和releaseDate当前时间戳创建我的记录。

现在我想通过get api调用来检索我的数据,其日期格式设置为ISO8601

// My test model just retrieves data for a row
function test_model_test($id){

    $query = $this->db->get_where('test', array('id' => $id)0);
    return ($query->num_rows() > 0) ? $query->row() : false;

}

 // Test api call to retrieve the data I need the date in ISO8601 format
function test_get(){

    $data = $this->test_model->test($this->get('id'));

    $response = array(
        'id' => $data->id,
        'title' => $data->title,
        'releaseDate' => $data->releaseDate->format(\DateTime::ISO8601)
    }

    $this->response([
        'status' => TRUE,
        'message' => 'Successful',
        'data' => $response
    ], REST_Controller::HTTP_OK);

}

运行此命令时出现错误。

Call to a member function format() on string /

我需要将日期从字符串转换为日期然后格式化吗?

我可以使用mysql这样返回当前格式的数据。

$query = $this->db->query('SELECT *, 
                DATE_FORMAT(releaseDate, "%Y-%m-%dT%TZ") AS releaseDateFormatted, 
                DATE_FORMAT(createdDate, "%Y-%m-%dT%TZ") AS createdDateFormatted,  
                FROM test 
                WHERE id = ' . $id . ' 
            ');

我不确定做到这一点的最佳方法,如果我只是保持mysql干净,可能会有很多我认为这将使我能够根据需要将php中的格式更改为其他格式。

真的会感谢任何建议,最佳做法等吗?

谢谢

更新此作品

$releaseDate = new DateTime($value->releaseDate);
$releaseDate->format(\DateTime::ISO8601);

0 个答案:

没有答案