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

如何将'YYYY_MM_DD_HH_MM_SS'格式的日期字符串转为标准日期时间格式

最优日期格式转换方案

针对存储为YYYY_MM_DD_HH_MM_SS格式的字符串日期,用数据库内置的日期解析+格式化函数是比LEFT/RIGHT拼接更高效、更可靠的方案——不仅代码更简洁,还能自动校验日期合法性,避免生成无效日期。以下是主流数据库的实现方式:

MySQL/MariaDB

先用STR_TO_DATE()将字符串解析为日期时间类型,再用DATE_FORMAT()输出目标格式:

SELECT DATE_FORMAT(STR_TO_DATE(your_date_field, '%Y_%m_%d_%H_%i_%s'), '%Y/%m/%d %H:%i:%s') AS formatted_date
FROM your_table;
  • 解析时%Y_%m_%d_%H_%i_%s完全匹配原字符串的分隔符和格式
  • 格式化时用%Y/%m/%d %H:%i:%s输出目标样式
  • 优势:遇到2023_02_30这类无效日期会返回NULL,自动过滤脏数据

PostgreSQL

用TO_TIMESTAMP()解析字符串,再用TO_CHAR()格式化:

SELECT TO_CHAR(TO_TIMESTAMP(your_date_field, 'YYYY_MM_DD_HH24_MI_SS'), 'YYYY/MM/DD HH24:MI:SS') AS formatted_date
FROM your_table;
  • HH24表示24小时制,MI代表分钟(避免和月份MM混淆)
  • 无效输入会返回错误或NULL(取决于数据库配置),确保数据合法性

SQL Server

推荐用TRY_CONVERT()做合法性校验,再用FORMAT()输出:

SELECT FORMAT(TRY_CONVERT(DATETIME, REPLACE(your_date_field, '_', ' '), 120), 'yyyy/MM/dd HH:mm:ss') AS formatted_date
FROM your_table;
  • 先用REPLACE把下划线换成空格,得到YYYY MM DD HH MM SS格式,再按ODBC标准(样式120)解析为日期
  • TRY_CONVERT对无效日期返回NULL,避免报错

如果确定数据无脏值,也可以用更简洁的替换拼接:

SELECT REPLACE(REPLACE(LEFT(your_date_field, 10), '_', '/') + ' ' + RIGHT(your_date_field, 8), '_', ':') AS formatted_date
FROM your_table;

通用替换方案(所有数据库适用)

如果数据库没有日期解析函数,用多次REPLACE比嵌套LEFT/RIGHT更易读:

-- 分步替换分隔符:先处理日期部分,再分隔日期时间,最后处理时间部分
SELECT REPLACE(REPLACE(REPLACE(your_date_field, '_', '/', 2), '_', ' ', 1), '_', ':') AS formatted_date
FROM your_table;
  • 注:部分数据库不支持替换次数参数,可调整为:
SELECT REPLACE(REPLACE(CONCAT(LEFT(your_date_field, 10), ' ', RIGHT(your_date_field, 8)), '_', '/'), '/', ':', 3)
FROM your_table;

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.01 09:13:23