我怎样才能将这11%2F13%2F2017%2000%3A00%3A00字符串转换为日期格式

问题描述 投票:-1回答:1

我有一个列有这种类型的字符串数据11%2F13%2F2017%2000%3A00%3A00,我想将其转换为日期格式。

有没有快速的方法来做到这一点,因为强制转换和转换不起作用。

该数据来自实时数据库表。我有一个像这样的全文列:

&Invoice_Date_Start=11%2F13%2F2017%2000%3A00%3A00&I‌​
nvoice_Date_End=11%2‌​F19%2F2017%2000%3A00‌​%3A00&

从我使用子串和左函数的各种组合提取的位置,列名称发票开始日期并获取我之前发布的数据。现在我需要将其转换为日期格式。

sql-server sql-server-2008-r2 type-conversion
1个回答
1
投票

它是URL编码的。使用此链接中的UrlDecode函数,然后将其强制转换:

https://www.codeproject.com/Articles/1005508/URL-Decode-in-T-SQL

select cast(dbo.UrlDecode('11%2F13%2F2017%2000%3A00%3A00') as datetime)

[编辑]如果您被限制创建该功能,并且您只需要每次为单个一致的字段替换相同的几个字符,您只需使用REPLACE:

SELECT CAST(REPLACE(REPLACE(REPLACE('11%2F13%2F2017%2000%3A00%3A00', '%2F', '/'), '%20', ' '), '%3A', ':') AS DATETIME)
© www.soinside.com 2019 - 2024. All rights reserved.