0

我在试图解决的 SQL Server 中有这个问题。我将此字符串保存在数据库中,其中包含文件的下载位置和下载日期,因此它可以有尽可能多的长度,示例在这里。

downloadedFile = c:/Programs and Features/Public/MyFiles/Myfile Mar 23 12:55 PM

或者可以是这样的:

downloadedFile = C:/Programs and Feature/Public/MyFiles/FileTypes/MOV/MyFile Mar 23 1:25 PM

即使更改格式,我也可以获得完整的 DATETIME 吗?上面的第一个示例来自 MM DD HH:MM 格式第二个是 MM DD H:MM 格式,如您所见,小时从两位数变为一位,这搞砸了我使用子字符串的机会。此字符串位于字符串的中间,因此,即使将一个字符添加到结果集中,将其解析为 datetime 时也可能会出现问题。有任何想法吗?

4

2 回答 2

1

你可以使用 CHARINDEX()函数

declare @downloadedFile varchar(500);
set @downloadedFile = 
     'c:/Programs and Features/Public/MyFiles/Myfile Mar 23 12:55 PM'

select substring(@downloadedFile,
                 CHARINDEX('Myfile ',@downloadedFile)+7,LEN(@downloadedFile))

结果:

Mar 23 12:55 PM

.

set @downloadedFile = 
 'C:/Programs and Feature/Public/MyFiles/FileTypes/MOV/MyFile Mar 23 1:25 PM';

select substring(@downloadedFile,
        CHARINDEX('Myfile ',@downloadedFile)+7,LEN(@downloadedFile))

结果:

Mar 23 1:25 PM
于 2012-08-28T08:22:02.603 回答
0

使用模拟函数来拆分字符串。使用“空格”作为分隔符。数组的最后 4 个索引是您的日期/时间。

也许这可以帮助你

http://social.msdn.microsoft.com/forums/en-US/transactsql/thread/4126a010-6885-4eb0-b79c-c798c90edb85

于 2012-08-28T07:38:21.680 回答