2017-11-20 11 views
-1

이 유형의 문자열 데이터가있는 열이 11%2F13%2F2017%2000%3A00%3A00이고이를 날짜 형식으로 변환하고 싶습니다.이 11 % 2F13 % 2F2017 % 2000 % 3A00 % 3A00 STRING IN DOATE FROMATE

캐스트와 변환이 작동하지 않기 때문에 빠른 방법이 있습니까?

해당 데이터는 실제 데이터베이스 테이블에서 가져옵니다.

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

내가 문자열 왼쪽 기능 열 이름 송장 시작 날짜를 다양한 조합을 사용하여 추출하고 내가 이전에 게시 한 데이터를 얻고 어디서 :이 같은 전체 텍스트 열이 있습니다. 이제 날짜 형식으로 변환해야합니다.

+2

좋아요, 왜이 날짜와 같은 형식으로 문자열을 저장합니까? 두 번째로 제공 한 문자열의 결과는 무엇입니까? 논리는 무엇입니까? 샘플 데이터와 원하는 uotputs을 설명과 함께 질문을 편집 해 주실 수 있습니까? – Sami

+0

또한 _cast를 정의하고 변환이 작동하지 않습니다. 무엇을 시도했는지 보여줍니다. – Sami

+0

_Invoice_Date_Start_ 및 _I nvoice_Date_End_라는 두 개의 날짜가 있음을 이해할 수 있습니다. 어느 것이 필요합니까? 또는 둘 다? – Sami

답변

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) 

[편집] 당신은 함수를 만드는 제한하는 경우, 당신은 같은 몇 글자마다 교체해야 단일 한 일관된 필드에 대해서만 바꾸기를 사용할 수 있습니다 :

SELECT CAST(REPLACE(REPLACE(REPLACE('11%2F13%2F2017%2000%3A00%3A00', '%2F', '/'), '%20', ' '), '%3A', ':') AS DATETIME) 
+0

안녕하세요. 실제 데이터베이스에 있는데 그 기능을 만들 수 없습니다. 그래서 다른 어떤 방법으로도 기능을 만들지 않고 그렇게 할 수 있습니다. 덕분에 – deep

+0

@deep 그래서 제공하는 문자열은 인코딩 된 URL입니까? – Sami

+0

감사합니다. 나는 당신의 대답으로 그것을 해결했습니다. :) – deep