2015-07-13 22 views
1

我必須開發系統,它是從另一個系統接受數據(在數據庫中)。我面對的問題是所有日期和時間數據在NVARCHAR。我必須轉換爲DATETIME以計算持續時間。我正在使用SQL Server 2008 R2。nvarchar到時間轉換

數據例如:

STR_YMD  STR_HMS 
-------------------- 
20150101 151000 
20090807 123009 
20130113 145602 
20090515 061700 

我怎麼能轉換該數據爲以下DATETIME數據?

STR_DT 
-------------------- 
2015-01-01 15:10:00 
2009-08-07 12:30:09 
2013-01-13 14:56:02 
2009-05-15 06:17:00 

希望有人能幫助我。在此先感謝

Bet

+0

你有沒有看着https://msdn.microsoft.com/en-us/library/ xhz1w05e(v = vs.110).aspx? –

回答

1

這樣的事情?

SELECT CAST(SUBSTRING(STR_YMD, 1, 4) + '/' + SUBSTRING(STR_YMD, 5, 2) + '/' + 
SUBSTRING(STR_YMD, 7, 2) + ' ' + SUBSTRING(STR_HMS, 1, 2) + ':' + 
SUBSTRING(STR_HMS, 3, 2) + ':' + SUBSTRING(STR_HMS, 5, 2) AS DateTime) 

編輯:可以使用LEFT功能是短時間格式兼容:

SELECT CAST(SUBSTRING(STR_YMD, 1, 4) + '/' + SUBSTRING(STR_YMD, 5, 2) + '/' + 
SUBSTRING(STR_YMD, 7, 2) + ' ' + SUBSTRING(LEFT(STR_HMS+'000000', 6), 1, 2) + ':' + 
SUBSTRING(LEFT(STR_HMS+'000000', 6), 3, 2) + ':' + 
SUBSTRING(LEFT(STR_HMS+'000000', 6), 5, 2) AS DateTime) 
+0

這是可能的,但STR_HMS的長度可能是多種多樣的,所以我必須檢查所有變體。例如1750.我認爲我可以使用一些轉換功能。不管怎麼說,還是要謝謝你。 – Bet

+0

@Bet看我的編輯。 – stephanejulien

+0

Hi @Bet如果此答案已解決您的問題,請點擊複選標記,考慮[接受它](http://meta.stackexchange.com/q/5234/179419)。這向更廣泛的社區表明,您已經找到了解決方案,併爲答覆者和您自己提供了一些聲譽。沒有義務這樣做。 – stephanejulien