2016-03-17 29 views
0

我正在請求供應商將SQL Server DateTime值轉換爲以下特定時間戳格式%Y-%m-%d %H:%M:%OS4 %z。該查詢將被放入他們的軟件來查詢我的數據庫。通過T-SQL將SQL Server日期時間格式化爲%Y-%m-%d%H:%M:%OS4%z格式?

期望的輸出似乎可能與此中的posixct question模糊相關;但這是關於SQL Server中的輸出。除了字段在其軟件中顯示爲空白外,我沒有提供任何具體的錯誤,但它在我的SQL接口中起作用。

我從SQL得到的輸出是這樣的:

2016-03-16 00:00:00.000 

說就這樣產生了,他們都沒有問題varchar(30)2016-03-16 11:34:36,因爲它只是把它作爲一個字符串時,映射到另一列的輸出一個字符串字段..但它對待它需要在引用%Y-%m-%d %H:%M:%OS4 %z格式。

除了數據類型之外,差異看起來很微妙,但即使映射到字符串字段中,也無法將SQL本機輸出映射到其一個字段。

我曾嘗試例如

cast(convert(datetime, tn.last_settled, 126) as Varchar(30)) 

datetime而導致Jan 1 1990 12:00AM,而不是所需的格式。

我如何得到想要的字符串2016-03-16 11:34:36和日期時間2016-03-16 00:00:00.000格式轉換成在T-SQL一個SQL Server datetime格式所需的%Y-%m-%d %H:%M:%OS4 %z格式?

+0

這聽起來像他們編寫的應用程序解析字符串,而不是開始使用日期時間(也許它們來自沒有處理日期時間的數據庫)。你使用的是什麼版本的SQL Server? –

+0

@lc。我正在運行SQL 2012 – CRSouser

回答

3

對於SQL Server 2012及更高版本,您應該可以使用帶有標準.NET格式化字符串的FORMAT,爲它們提供所需的輸出。例如:

FORMAT(tn.last_settled, 'yyyy-MM-dd HH-mm:ss.ffff') 

要打開你的字符串輸入成日期時間,你應該能夠使用PARSE

PARSE(@theStringValueTheySendYou as datetime) 
+0

如果我小寫的年份(yyyy與YYYY)適用於日期時間,但不是字符串。我必須對字符串進行一次轉換才能使第二部分工作。 'FORMAT(convert(datetime,tk.last_start_date,126),'yyyy-MM-dd HH-mm:ss.ffff')' – CRSouser

+0

@CRSouser對不起,小寫字母y –

相關問題