You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何让CodeIgniter模型返回MSSQL数据库原始日期格式?

解决CodeIgniter查询MSSQL Date字段返回格式不一致的问题

我之前也碰到过类似的MSSQL+CodeIgniter日期格式坑,给你几个实用的解决办法,帮你拿到数据库原始的YYYY-MM-DD格式:

方案1:SQL查询层面直接指定格式(最推荐)

不用改框架,直接在TSQL里用CONVERT函数把Date字段转成你要的字符串格式,这样CI返回的结果就是原始的日期格式:

SELECT CONVERT(VARCHAR(10), your_date_column, 23) AS your_date_column FROM your_table;

这里的23是MSSQL专属的格式代码,刚好对应YYYY-MM-DD,完全匹配你想要的结果。

方案2:调整CodeIgniter的数据库驱动配置

如果不想每个查询都写转换逻辑,可以修改CI的MSSQL驱动文件(注意:升级框架前记得备份,或者自定义驱动避免被覆盖):

  • 如果你用的是sqlsrv驱动,找到system/database/drivers/sqlsrv/sqlsrv_result.php
  • 找到处理日期类型字段的代码段,把自动转成May 18, 2018 12:00:00 AM这类格式的逻辑去掉,改成直接返回数据库的原始字符串格式。

方案3:模型里手动处理返回结果

要是不想动框架核心文件,也可以在模型查询完结果后,手动遍历转换:

$query = $this->db->get('your_table');
$results = $query->result();

foreach ($results as $row) {
    // 处理DateTime对象转成指定格式
    if ($row->your_date_column instanceof DateTime) {
        $row->your_date_column = $row->your_date_column->format('Y-m-d');
    } else {
        // 对已格式化的字符串直接截取前10位
        $row->your_date_column = substr($row->your_date_column, 0, 10);
    }
}

return $results;

个人优先推荐方案1,它既不用修改框架核心,性能也更优,数据库直接返回你需要的格式,后续你想自己再做其他格式化也灵活。

内容的提问来源于stack exchange,提问作者Kevin

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.28 04:12:07