为什么mysql ceil datetime字符串?

时间:2015-12-02 21:13:31

标签: php mysql codeigniter datetime

我在使用字符串搜索datetime列时遇到问题。

我使用codeigniters insert_batch,但如果我使用insert,我确定它是一样的。这是我插入数据的一个例子:

$valor_log_proceso = array(
        'id_interno' => 21656,
        'proceso_id' => 1,
        'fecha_inicio' => '2015-12-02T09:04:59.884',
        'fecha_fin' => '2015-12-02T09:20:10.884',
        'equipo' => "EQUIPOPC",
        'usuario_id' => 2,
        'log_envio_id' => 10
    );

在mysql db' fecha_inicio'和' fecha_fin'是datetime colmuns。 ' fecha_inicio'和' fecha_fin'每个$ valor_log_proceso数组中的值都是从请求中检索的字符串。

当我尝试使用get_where

查找数据时
$valor_log_proceso = array(
        'id_interno' => 21656,
        'proceso_id' => 1,
        'fecha_inicio' => '2015-12-02T09:04:59.884',
        'fecha_fin' => '2015-12-02T09:20:10.884',
        'equipo' => "EQUIPOPC",
        'usuario_id' => 2
    );
$result = $this->db->get_where($table_name, $valor_log_proceso)->result_array();

$result是一个空数组。

然后我检查数据库并查看截断/关闭的日期:

fecha_inicio: 2015-12-02 09:05:00
fecha_fin: 2015-12-02 09:20:11

所以问题是为什么会发生这种情况? 如何正确搜索表格中的行?

1 个答案:

答案 0 :(得分:2)

发生这种情况的原因是DATETIME列只能有这种数据模式。如你所见,它也正在剥离'T'。

请参阅https://dev.mysql.com/doc/refman/5.6/en/datetime.html

The DATETIME type is used for values that contain both date and time parts. MySQL retrieves and displays DATETIME values in 'YYYY-MM-DD HH:MM:SS' format. The supported range is '1000-01-01 00:00:00' to '9999-12-31 23:59:59'

为了正确创建查询,您必须更改数组以匹配相同的模式...

    'fecha_inicio' => '2015-12-02 09:04:59',
    'fecha_fin'    => '2015-12-02 09:20:10',

<强> ADDITION

这是一个将当前格式操作为所需格式的功能

function format($x){
    $x = preg_replace('/[T]/', ' ', $x);
    $y = explode(".", $x);
    return $y[0];
}

$x = format('2015-12-02T09:04:59.884');

echo $x;  // Prints 2015-12-02 09:04:59