如何在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
相关产品推荐
相关产品推荐

