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

