技术咨询:如何将含毫秒的时间字符串转为日期及MySQL str_to_date用法疑问
搞定带毫秒的时间字符串转换问题
嘿,我来帮你理清这两个关键点:
先搞懂.000是什么含义
那个.000是时间的毫秒(milliseconds)部分,代表这个时间点的毫秒值为0。MySQL的DATETIME类型支持小数秒(最多6位,对应微秒级精度),这里的3位就是用来记录毫秒粒度的,目的是让时间记录更精准。
用MySQL的STR_TO_DATE转成你要的日期格式
要把2020-05-14 14:16:36.000转换成2020-05-14的日期格式,你需要先完整解析字符串,再提取日期部分:
具体SQL示例
- 推荐方案:直接转换为
DATE类型(这是标准的日期类型,而非字符串)
SELECT DATE(STR_TO_DATE('2020-05-14 14:16:36.000', '%Y-%m-%d %H:%i:%s.%f')) AS target_date;
执行后会返回2020-05-14的DATE类型值,显示出来就是你需要的格式。
- 备选方案:转换为字符串形式的日期(如果确实需要字符串结果)
SELECT DATE_FORMAT(STR_TO_DATE('2020-05-14 14:16:36.000', '%Y-%m-%d %H:%i:%s.%f'), '%Y-%m-%d') AS target_date_str;
关键提醒
一定要在STR_TO_DATE的格式字符串里加上%f,用来匹配.000这部分!如果漏掉它,MySQL会因为无法匹配字符串的尾部内容,直接返回NULL,这点特别重要。
内容的提问来源于stack exchange,提问作者asuscu
相关产品推荐
相关产品推荐

