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

PHP如何将数据库中MM-DD-YYYY格式Timestamp转为YYYY-MM-DD格式?

当然有简便的实现方法!具体怎么操作要看你使用的数据库类型,我整理了几个主流数据库的方案,你可以直接套用:

按数据库分类的解决方案

MySQL/MariaDB

先用STR_TO_DATE把原格式的字符串转换成日期时间类型,再用DATE_FORMAT输出成你要的年份前置格式:

SELECT DATE_FORMAT(STR_TO_DATE(your_timestamp_column, '%m-%d-%Y %H:%i:%s'), '%Y-%m-%d %H:%i:%s') AS converted_timestamp
FROM your_table;

如果需要直接修改数据库里存储的数据,可以用更新语句:

UPDATE your_table
SET your_timestamp_column = DATE_FORMAT(STR_TO_DATE(your_timestamp_column, '%m-%d-%Y %H:%i:%s'), '%Y-%m-%d %H:%i:%s');

注意:执行更新前一定要先备份数据,或者先用SELECT语句验证转换结果是否正确,避免误操作!

PostgreSQL

用TO_TIMESTAMP解析原格式字符串,再通过TO_CHAR格式化输出目标格式:

SELECT TO_CHAR(TO_TIMESTAMP(your_timestamp_column, 'MM-DD-YYYY HH24:MI:SS'), 'YYYY-MM-DD HH24:MI:SS') AS converted_timestamp
FROM your_table;

更新数据的写法:

UPDATE your_table
SET your_timestamp_column = TO_CHAR(TO_TIMESTAMP(your_timestamp_column, 'MM-DD-YYYY HH24:MI:SS'), 'YYYY-MM-DD HH24:MI:SS');

SQL Server

借助CONVERT函数,先把原格式字符串转成datetime类型,再转成目标格式的字符串:

SELECT CONVERT(VARCHAR, CONVERT(DATETIME, your_timestamp_column, 101), 120) AS converted_timestamp
FROM your_table;

这里的101是对应MM-DD-YYYY格式的样式代码,120则是YYYY-MM-DD HH:MI:SS的样式代码。更新语句如下:

UPDATE your_table
SET your_timestamp_column = CONVERT(VARCHAR, CONVERT(DATETIME, your_timestamp_column, 101), 120);

备选:纯字符串拼接(不推荐)

如果不想用日期函数,也可以直接通过字符串截取拼接来实现,但这种方法只适合格式完全规范的情况,一旦原字符串格式有异常(比如月份是单数字)就会出错,所以仅作为备选:

-- 以MySQL为例,其他数据库的字符串截取函数类似
SELECT CONCAT(
    SUBSTRING(your_timestamp_column, 7, 4), '-',
    SUBSTRING(your_timestamp_column, 1, 5),
    SUBSTRING(your_timestamp_column, 10)
) AS converted_timestamp
FROM your_table;

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.26 08:42:39