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

如何在PHP中正确显示MySQL数据库TimeStamp(3)字段的毫秒数?

解决MySQL Timestamp(3)毫秒在PHP中显示为000的问题

你的问题根源出在strtotime()函数上——它只能处理到秒级,会直接丢弃Timestamp(3)字段里的毫秒部分,所以后续用date()格式化自然只能输出000啦。下面给你两种靠谱的解决方案:

方案一:让MySQL直接格式化输出

在查询数据库时就把时间格式成你需要的样子,PHP拿到后直接输出即可,省去二次处理的麻烦:

SELECT 
  CONCAT(
    DATE_FORMAT(setTime, '%h:%i:%s'), 
    '.', 
    SUBSTRING(MICROSECOND(setTime), 1, 3),
    DATE_FORMAT(setTime, ' %p %M %e, %Y')
  ) AS formatted_time 
FROM humidity;

PHP端直接调用格式化后的字段:

<?php echo $row['formatted_time']; ?>

方案二:用PHP的DateTime类精准处理

DateTime类支持解析包含毫秒的时间字符串,比strtotime的精度更高,代码写法如下:

<?php
// 确保从数据库拿到完整的带毫秒的时间字符串
$rawTime = $row['setTime'];
// 创建DateTime对象,匹配MySQL Timestamp(3)的格式
$datetime = DateTime::createFromFormat('Y-m-d H:i:s.u', $rawTime);
// 格式化输出,v对应三位毫秒
echo $datetime->format('h:i:s.v a F j, Y');
?>

⚠️ 注意:要确保你的数据库驱动(比如PDO/mysqli)没有自动截断时间的毫秒部分,必须完整返回setTime的原始字符串。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.25 08:31:55