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

如何在MySQL中去除DATETIME类型毫秒部分的尾随零

如何在MySQL中去除DATETIME类型毫秒部分的尾随零?

嘿,这个需求我之前做项目时刚好碰到过,下面分享几个实用的解决方案,不管是普通DATETIME还是更高精度的DATETIME(6)都能处理:

方法一:嵌套TRIM函数(兼容所有MySQL版本)

这个方法不依赖高版本特性,适合所有环境。核心思路是先把日期转成带完整毫秒的字符串,再逐步去掉末尾的零和多余的小数点:

SELECT 
  TRIM(TRAILING '0' FROM TRIM(TRAILING '.' FROM DATE_FORMAT(your_datetime_column, '%Y-%m-%d %H:%i:%s.%f'))) AS cleaned_datetime
FROM your_table;

效果说明:

  • 输入 2018-04-13 13:02:32.948000 → 输出 2018-04-13 13:02:32.948
  • 输入 2018-04-13 13:02:32.000000 → 输出 2018-04-13 13:02:32

方法二:正则表达式替换(MySQL 8.0+ 适用)

如果你的MySQL版本是8.0及以上,可以用更简洁的正则替换,一步到位处理两种情况(全零毫秒和末尾带零的非零毫秒):

SELECT 
  REGEXP_REPLACE(your_datetime_column, '(\\.0*)$|(\\.[0-9]*?)0+$', '$2') AS cleaned_datetime
FROM your_table;

正则逻辑:

  • (\\.0*)$:匹配末尾的.000...格式,替换为空字符串
  • (\\.[0-9]*?)0+$:匹配.xxxx000格式,只保留小数点后非零的有效部分(比如.948000保留.948)

额外提示

如果你的业务只需要固定精度的毫秒(比如强制保留3位),也可以直接用CAST(your_datetime_column AS DATETIME(3)),但这个方法会强制保留指定位数的毫秒(即使是零),不适合动态去除尾随零的场景。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.25 06:15:03