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

如何在SQL Server中提取括号内的两个日期并分列为起止日期

SQL Server从字符串括号内提取并转换日期格式

可以通过嵌套SUBSTRING、CHARINDEX和CONVERT函数,在单个查询中完成括号内日期的提取与格式转换。假设你的表名为YourTable,存储目标字符串的字段为YourStringColumn,以下是实现代码:

SELECT
    -- 提取并转换起始日期
    CONVERT(VARCHAR(10), CONVERT(DATE, SUBSTRING(DateRange, 1, CHARINDEX('-', DateRange) - 1), 106), 103) AS Fromdate,
    -- 提取并转换结束日期
    CONVERT(VARCHAR(10), CONVERT(DATE, LTRIM(SUBSTRING(DateRange, CHARINDEX('-', DateRange) + 1, LEN(DateRange))), 106), 103) AS Todate
FROM (
    -- 先提取括号内的日期范围子串
    SELECT SUBSTRING(YourStringColumn, CHARINDEX('(', YourStringColumn) + 1, CHARINDEX(')', YourStringColumn) - CHARINDEX('(', YourStringColumn) - 1) AS DateRange
    FROM YourTable
) AS Temp

代码说明:

  1. 内层子查询:通过CHARINDEX定位括号的位置,用SUBSTRING提取括号内的完整日期范围(如1 Aug 2020 - 30 Oct 2020)。
  2. 拆分日期:在外层查询中,用CHARINDEX找到分隔符-的位置,拆分出起始日期和结束日期的原始字符串。
  3. 格式转换:
    • 先用CONVERT(DATE, 日期字符串, 106)将dd mon yyyy格式的字符串转为DATE类型(106是SQL Server对应该格式的样式代码)。
    • 再用CONVERT(VARCHAR(10), DATE类型值, 103)将日期转为dd/mm/yyyy格式的字符串(103对应英式日期样式)。

如果存在格式不规范的字符串,建议改用TRY_CONVERT替代CONVERT,避免转换失败导致查询报错。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.12 01:36:22