php - 为什么 mysql ceil 日期时间字符串?

标签 php mysql codeigniter 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 数据库中,'fecha_inicio' 和 'fecha_fin' 是 datetime 列。 每个 $valor_log_proceso 数组中的“fecha_inicio”和“fecha_fin”值都是从请求中检索的字符串。

当我尝试使用 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

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

最佳答案

发生这种情况的原因是 DATETIME 列只能具有这种数据模式。正如您所看到的,它也删除了“T”。

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

DATETIME 类型用于包含日期和时间部分的值。 MySQL 以“YYYY-MM-DD HH:MM:SS”格式检索并显示 DATETIME 值。支持的范围是“1000-01-01 00:00:00”到“9999-12-31 23:59:59”

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

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

添加

这是一个将当前格式操作为所需格式的函数

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

关于php - 为什么 mysql ceil 日期时间字符串?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34053103/

相关文章:

php - 在投票比赛中寻找作弊者

mysql - 如何进行选择并能够回退到默认值?

Codeigniter:加入 'where in' 子句

php - Apache/xampp 无法在 ubuntu 端口 80 上运行

PHP,在没有警告的情况下获取数组值的更简单方法

php - 操作字符串 - PHP 或 MySQL

mysql - 最后插入字段的 ID

mysql - 无法从字节数组打开电子邮件附件

php - 删除和替换图像文件但仍然显示旧图像

php - 学说 2.2 和代码点火器 2.1