2013-11-23 76 views
1

我有一個表,它的一列是XML數據類型。 該XML值包括TIMEPERIOD值,看起來像這樣:SQL - 無法將字符串轉換爲YYYYMMDD格式

"{start:{align:'Start',date:'2011-05-20T00:00:00'}" 

我設法提取只與下面的查詢從該字符串日期:

SELECT SUBSTRING(configuration.value('(/ActiveService/@TimePeriod)[1]','nvarchar(50)'), 
CHARINDEX('''', configuration.value('(/ActiveService/@TimePeriod)[1]','nvarchar(50)'),28)+1,10) 
FROM [MySystem].[dbo].[MyServices] 

,所以我得到這個作爲結果: 2013年11月1日

但是,現在我需要將其轉換爲這種格式:年月日

當我使用轉換成格式化112我仍然得到SAM e結果:2013-11-01

爲什麼?

+3

僅供參考,數據並不XML。它看起來有點像JSON,但它是無效的。基本上它似乎是Javascript。 – GolezTrol

回答

3

它從XML了價值爲varchar,你可以把它轉換成格式YYYYMMDD(因爲它已經爲varchar),你必須把它轉換爲日期(或日期時間在前):

select convert(varchar(8), convert(datetime, 
    substring(
     @data.value('(/ActiveService/@TimePeriod)[1]','nvarchar(50)'), 29, 10 
    ), 120), 112) 

但在你情況下,它可能會更容易刪除-,由replace(<your value>, '-', '')

sql fiddle demo

+0

謝謝羅馬!兩種方式適用於我:) – user1508682

相關問題