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

SQL Server如何将格式不统一的YYYYMMDD、YYYYMMDD-HHMM转换为mm/dd/yyyy hh:mm

时间格式转换SQL调整方案

问题原因

原有写法存在两处问题:

  • 未区分带时间、不带时间的两种输入格式,无时间后缀的字符串执行RIGHT、SUBSTRING操作会返回无效值
  • 时间部分提取逻辑错误:带-的YYYYMMDD-HHMM格式中,时间仅占后4位,原有RIGHT(ID , 6)会包含前缀的-字符,拆分时分时会出错

解决方案

用CASE WHEN判断输入是否包含-字符,分场景处理,无时间后缀的默认补00:00即可,以下是不同数据库环境的实现代码:

SQL Server 版本

SELECT
  CASE
    -- 匹配带时间的YYYYMMDD-HHMM格式
    WHEN CHARINDEX('-', id) > 0
    THEN FORMAT(
        CONVERT(DATETIME, LEFT(id, 8), 120) 
        + CAST(STUFF(RIGHT(id,4), 3, 0, ':') AS DATETIME),
        'MM/dd/yyyy HH:mm'
    )
    -- 匹配不带时间的YYYYMMDD格式,默认补00:00
    ELSE CONVERT(VARCHAR, CONVERT(DATETIME, LEFT(id, 8), 120), 101) + ' 00:00'
  END AS target_format_time
FROM 你的表名

MySQL 版本

SELECT
  CASE
    WHEN INSTR(id, '-') > 0
    THEN DATE_FORMAT(
        STR_TO_DATE(CONCAT(LEFT(id,8), ' ', INSERT(RIGHT(id,4),3,0,':')), '%Y%m%d %H:%i'),
        '%m/%d/%Y %H:%i'
    )
    ELSE DATE_FORMAT(STR_TO_DATE(LEFT(id,8), '%Y%m%d'), '%m/%d/%Y 00:00')
  END AS target_format_time
FROM 你的表名

内容的提问来源于stack exchange,提问作者Jian Gui Li

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.06 07:42:03