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

如何在SQL Server中移除日期字段里的第三个短横线(-)

解决SQL Server中特定短横线移除的问题

针对你遇到的日期字符串格式问题(27-01-2023 - 15:18:52),这里提供两种实用方法仅移除日期和时间之间的多余短横线:

方法一:精准替换特定子串(最简便)

你的字符串里,多余的短横线是和前后空格一起出现的(-),而日期部分的短横线没有前后空格,直接用REPLACE替换这个特定子串为单个空格即可:

-- 处理字符串后转换为日期类型
SELECT 
    CAST(REPLACE(your_date_column, ' - ', ' ') AS DATETIME) AS converted_datetime
FROM your_table;

处理后字符串会变成27-01-2023 15:18:52,SQL Server可以正常识别这个格式。如果担心存在无效数据导致报错,建议用TRY_CAST替代CAST,无效数据会返回NULL而非抛出错误:

SELECT 
    TRY_CAST(REPLACE(your_date_column, ' - ', ' ') AS DATETIME) AS converted_datetime
FROM your_table;

方法二:定位第三个短横线并移除(适用于格式有轻微变化的场景)

如果字符串格式偶尔有空格差异,但第三个短横线始终是需要移除的目标,可以用CHARINDEX多次调用定位第三个短横线的位置,再用STUFF函数移除它:

SELECT 
    STUFF(
        your_date_column,
        -- 定位第三个短横线的位置
        CHARINDEX('-', your_date_column, CHARINDEX('-', your_date_column, CHARINDEX('-', your_date_column)+1)+1),
        1, -- 移除1个字符(即目标短横线)
        ''
    ) AS cleaned_date_string,
    -- 转换为日期类型
    CAST(STUFF(your_date_column, CHARINDEX('-', your_date_column, CHARINDEX('-', your_date_column, CHARINDEX('-', your_date_column)+1)+1), 1, '') AS DATETIME) AS converted_datetime
FROM your_table;

这个方法会直接去掉第三个短横线,处理后的字符串是27-01-2023 15:18:52(日期和时间之间为两个空格),不过SQL Server识别日期时会忽略多余空格,不影响转换结果。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.02 10:45:28