String tsql无法将字符串转换为日期时间
当我从文本字段构造datetime时,我得到一个错误。 “服务器:Msg 241,16级,状态1,第1行 从字符串转换日期时间时出现语法错误。“ 我使用的文本是 “航班警报:亲爱的客户,2014年3月28日283次航班延误,新ETD为3月29日05时30分。” 这是我的问题String tsql无法将字符串转换为日期时间,string,tsql,datetime,String,Tsql,Datetime,当我从文本字段构造datetime时,我得到一个错误。 “服务器:Msg 241,16级,状态1,第1行 从字符串转换日期时间时出现语法错误。“ 我使用的文本是 “航班警报:亲爱的客户,2014年3月28日283次航班延误,新ETD为3月29日05时30分。” 这是我的问题 SELECT --- Extracting Flight No from Message field -- case when substring(oh_message,(charindex('/',OH_MES
SELECT
--- Extracting Flight No from Message field --
case
when substring(oh_message,(charindex('/',OH_MESSAGE)-4),1) = '-'
or substring(oh_message,(charindex('/',OH_MESSAGE)-4),1) = 'K'
THEN
substring(oh_message,(charindex('/',OH_MESSAGE)-3),3)
else
substring(oh_message,(charindex('/',OH_MESSAGE)-4),4)
END AS flightno,
---- next Flight Date
substring(oh_message,(CHARINDEX('/',Oh_message)) + 1
,5)as DtMnth,
---- next Flight Year
substring(oh_message,(CHARINDEX('/',Oh_message)) + 7
,4)as DtYr,
-- Flight Hours
case
when source = 'SNMv2' THEN(
substring(oh_message,(CHARINDEX('is on time at',Oh_message)) + 14,4))
else
substring(oh_message,(CHARINDEX('new ETD is',Oh_message)) + 11,4)
end as fhour,
--- Converting to datetime format
CONVERT(datetime,
(substring(oh_message,(CHARINDEX('/',Oh_message)) + 3,3))
+ ' ' +
(substring(oh_message,(CHARINDEX('/',Oh_message)) + 1,2))
+ ' ' +
(substring(oh_message,(CHARINDEX('/',Oh_message)) + 7,4))
,109)
,OH_MESSAGE
from snmnsnmv2view
分别选择不同的部分以确保您正在组合的数据是正确的,例如,您是否确定此部分中的数据是正确的
substring(oh_message,(CHARINDEX('/',oh_message))+3,3)
我尝试了此方法,并且效果良好:declare@oh_message varchar(max)set@oh_message='航班警报:亲爱的客户,283/283航班,2014年延迟,新ETD为3月29日05:30选择转换(日期时间,(子字符串(@oh_消息,(CHARINDEX('/',@oh_消息))+3,3))+“”+(子字符串(@oh_消息,(CHARINDEX('/',@oh_消息))+1,2))+“”+(子字符串(@oh_消息,(CHARINDEX('/',@oh_消息))+7,4)),109)因为OH_消息
得到了2014-03-28 00:00:00.000作为输出。我刚刚发现由于格式不同,文本字段中有一些额外字符。无论如何,感谢RezaRahmati和KingTwisp。