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

如何修改MySQL datetime列的时间显示格式去除毫秒部分

MySQL时间字段去掉毫秒、仅保留到秒的实现方案

根据你的需求,分两种使用场景提供对应方法,你可以按需选择:

1. 仅查询时展示秒级精度(不修改表内原始数据)

这种方案不需要改动表结构,只需要在查询时对字段做格式化处理即可,适合需要保留原始毫秒数据、仅展示时去掉后缀的场景。

  • 方法1:用DATE_FORMAT函数格式化输出(通用方案,字段为时间类型、字符串类型都可用)
SELECT
  TagName,
  DATE_FORMAT(`DateTime`, '%Y-%m-%d %H:%i:%s') AS `DateTime`,
  Value
FROM 你的实际表名;

执行后返回的DateTime字段会直接截断毫秒部分,输出格式和你预期的2022-07-05 12:01:40完全一致。

  • 方法2:类型转换(适合字段本身是DATETIME(3)/DATETIME(6)等带小数秒精度的原生时间类型)
SELECT
  TagName,
  CAST(`DateTime` AS DATETIME(0)) AS `DateTime`,
  Value
FROM 你的实际表名;

这种方式返回的结果仍是时间类型,后续做时间排序、区间计算时比字符串格式更方便。注意:CAST转换时会对毫秒部分做四舍五入,比如12:01:40.844会被转为12:01:41,如果需要直接截断请用方法1。

  • 方法3:字符串截取(适合字段是VARCHAR/TEXT等字符串类型存储的场景)
    你的示例中时间字符串格式固定,前19位刚好是秒级精度的内容,直接截取性能更高:
SELECT
  TagName,
  LEFT(`DateTime`, 19) AS `DateTime`,
  Value
FROM 你的实际表名;

2. 永久修改表配置,自动保留秒级精度

如果你后续不需要存储毫秒数据,可以直接修改字段精度,之后所有写入、查询都会自动保留到秒,不用每次查询单独写处理函数。

注意:直接修改字段精度时MySQL默认会对毫秒做四舍五入,如果需要强制截断毫秒,先执行更新语句处理存量数据:

UPDATE 你的实际表名
SET `DateTime` = DATE_FORMAT(`DateTime`, '%Y-%m-%d %H:%i:%s');

处理完存量数据后,执行字段修改语句即可(注意字段约束要和原字段保持一致,比如原字段是NOT NULL、有默认值的话要同步带上,不要直接照搬语句):

ALTER TABLE 你的实际表名
MODIFY COLUMN `DateTime` DATETIME(0);

内容的提问来源于stack exchange,提问作者Gracella Q Sumarlin

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.27 10:06:36