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

使用T-SQL从字符串中移除星期名称

在T-SQL中移除日期字符串的星期名称并转换为日期类型

针对你的需求,这里有几种实用的方法来处理带星期的日期字符串,之后就能轻松进行日期比较了:


方法1:直接转换(无需手动移除星期)

其实SQL Server的CONVERT函数支持识别带星期前缀的日期格式,你可以直接指定对应的格式代码来完成转换,省去手动截取的步骤:

DECLARE @InputDateStr VARCHAR(50) = 'Thursday, September 13, 2018';
-- 使用格式代码109,它会自动忽略开头的星期部分
DECLARE @ConvertedDate DATE = CONVERT(DATE, @InputDateStr, 109);

-- 现在可以直接进行日期比较
IF @ConvertedDate < '2018-09-15'
    PRINT '目标日期早于2018-09-15';
ELSE
    PRINT '目标日期晚于或等于2018-09-15';

格式代码109对应的是mon dd yyyy hh:mi:ss:mmmAM(或PM)的格式,但SQL Server会智能跳过开头不匹配的星期文本,只要后面的日期部分符合格式要求就行。


方法2:手动截取移除星期部分

如果你更倾向于先明确移除星期名称,再转换日期,可以通过CHARINDEX找到第一个逗号的位置,然后截取后面的子串:

DECLARE @InputDateStr VARCHAR(50) = 'Thursday, September 13, 2018';
-- 找到第一个逗号的索引位置
DECLARE @CommaPosition INT = CHARINDEX(',', @InputDateStr);
-- 截取逗号后的部分,并去除开头的空格
DECLARE @DateOnlyStr VARCHAR(50) = LTRIM(SUBSTRING(@InputDateStr, @CommaPosition + 1, LEN(@InputDateStr)));
-- 转换为日期类型
DECLARE @ConvertedDate DATE = CONVERT(DATE, @DateOnlyStr);

-- 日期比较示例
SELECT CASE 
    WHEN @ConvertedDate = '2018-09-13' THEN '日期匹配'
    ELSE '日期不匹配'
END AS ComparisonResult;

或者用STUFF函数简化截取操作,效果完全一致:

DECLARE @InputDateStr VARCHAR(50) = 'Thursday, September 13, 2018';
DECLARE @DateOnlyStr VARCHAR(50) = LTRIM(STUFF(@InputDateStr, 1, CHARINDEX(',', @InputDateStr), ''));
DECLARE @ConvertedDate DATE = CONVERT(DATE, @DateOnlyStr);

不管用哪种方法,转换后的DATE类型就可以直接使用常规的比较运算符(<、>、=、<=、>=)来进行日期对比了,非常方便。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.29 19:57:43