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

Yii2框架中如何在查询内将Unix时间戳转换为可读时间戳?

当然可以直接在查询语句里实现!而且有两种实用思路,看你偏好哪种场景:

方法一:数据库层面直接转换(推荐,减少PHP端额外处理)

不同数据库的时间戳转换函数不一样,我给你列几个常用场景的写法:

  • MySQL/MariaDB:用FROM_UNIXTIME()函数,把Unix时间戳转成指定格式的字符串,参数格式和PHP的date()函数类似
    修改你的查询代码如下:

    $query = (new \yii\db\Query())
        ->select([
            'created_at' => 'FROM_UNIXTIME(a.created_at, "%Y-%m-%d %H:%i:%s")',
            'updated_at' => 'FROM_UNIXTIME(a.updated_at, "%Y-%m-%d %H:%i:%s")',
        ])
        ->from(['a' => 'product'])
        ->all();
    
  • PostgreSQL:需要先用TO_TIMESTAMP()把秒数转成时间类型,再用TO_CHAR()格式化输出:

    $query = (new \yii\db\Query())
        ->select([
            'created_at' => "TO_CHAR(TO_TIMESTAMP(a.created_at), 'YYYY-MM-DD HH24:MI:SS')",
            'updated_at' => "TO_CHAR(TO_TIMESTAMP(a.updated_at), 'YYYY-MM-DD HH24:MI:SS')",
        ])
        ->from(['a' => 'product'])
        ->all();
    
  • SQL Server:通过DATEADD()把Unix秒数加到1970-01-01基准时间上,再转成字符串格式:

    $query = (new \yii\db\Query())
        ->select([
            'created_at' => "CONVERT(VARCHAR, DATEADD(SECOND, a.created_at, '1970-01-01'), 20)",
            'updated_at' => "CONVERT(VARCHAR, DATEADD(SECOND, a.updated_at, '1970-01-01'), 20)",
        ])
        ->from(['a' => 'product'])
        ->all();
    

    这里的20是SQL Server内置的格式码,对应YYYY-MM-DD HH:MI:SS。

方法二:PHP/Yii层面处理查询结果

如果不想在数据库层做转换,也可以先拿到原始Unix时间戳,再在PHP里统一格式化:

$query = (new \yii\db\Query())
    ->select(['a.created_at', 'a.updated_at'])
    ->from(['a' => 'product'])
    ->all();

// 遍历结果转换格式
$formattedData = array_map(function($item) {
    $item['created_at'] = date('Y-m-d H:i:s', $item['created_at']);
    $item['updated_at'] = date('Y-m-d H:i:s', $item['updated_at']);
    return $item;
}, $query);

⚠️ 注意:如果你的Unix时间戳是毫秒级(比如13位数字),不管用哪种方法都要先除以1000,比如MySQL里要写成FROM_UNIXTIME(a.created_at/1000, "%Y-%m-%d %H:%i:%s"),PHP里则是date('Y-m-d H:i:s', $item['created_at']/1000),别忽略这个细节!

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.27 04:13:35