我有两列创建日期和Rtrail
例如
Create_date ------------------------------------ Rtrail
2014/5/4 6:28:34 PM .................................... .... amin(05/11/14 20:16:19) - > dd(05/11/14 21:17:04)
05/11/14 20:16:19 PM .................................... .... amin(05/11/14 20:16:19) - > dd(05/11/14 21:17:04)
现在我想要以“** amin ”*开头的分割日期时间,并更新上一栏“创建日期”。 我如何在SQL.Need建议
先谢谢。
答案 0 :(得分:1)
这适用于您提供的示例数据。这种形式非常脆弱。我会添加一些谓词来检查(和)的存在,并确保其中的值可以作为日期进行转换。我会帮助你。
update #Something
set create_date = SUBSTRING(Rtrail, charindex('(', Rtrail) + 1, charindex(')', Rtrail) - charindex('(', Rtrail) - 1)
答案 1 :(得分:0)
您可以使用一些字符串解析来拉出日期。如果Rtrail日期始终以相同的字符开头和结尾,您可以使用类似以下查询的内容:
DECLARE @rtrail VARCHAR(256) = 'amin(05/11/14 20:16:19)->dd(05/11/14 21:17:04)'
, @startIndex INT
, @endIndex INT
, @dateStringLength INT
, @extractedDateString VARCHAR(256)
, @convertedDate DATETIME
SET @startIndex = CHARINDEX('(', @rtrail) + 1 -- Add 1 to make it exclude the index character
SET @endIndex = CHARINDEX(')', @rtrail)
SET @dateStringLength = @endIndex - @startIndex
SET @extractedDateString = SUBSTRING(@rtrail, @startIndex, @dateStringLength)
SET @convertedDate = CONVERT(DATETIME, @extractedDateString)
-- Display the results
SELECT @startIndex
, @endIndex
, @extractedDateString
, @convertedDate