2015-02-07 66 views
1

我想這nvarchar列於日期時間格式轉換:找不到SQL Server中的日期樣式格式2012

 "29/12/14 07:46:20 PM" 

這種風格是好的,但一直沒有時間:

 SELECT CONVERT(datetime, nvarcharDateColumn, 3) AS [DD/MM/YY] 

如何我可以轉換它並保留所有的日期部分(日期+時間)?

+0

你正在做的相反。 'CONVERT(VARCHAR(8),GETDATE(),3)'將DATETIME轉換爲'VARCHAR(8)'。你在第一行說你想將'NVARCHAR'轉換成'DATETIME'。這是什麼? – 2015-02-07 13:36:43

+4

爲什麼要在SQL中格式化日期?在你的UI層做到這一點。 – DavidG 2015-02-07 13:38:49

+0

@ roryap問題是我無法找到合適的日期樣式。我知道你在說什麼。這只是一個例子。 – Ariox66 2015-02-07 13:48:01

回答

1

SQL Server中的日期時間數據類型沒有「格式」。它本地是一個8字節的二進制值。到nvarchar的字符串轉換爲datetime,請使用轉換與nvarchar列作爲第二個參數:

SELECT CONVERT(datetime, nvarcharColumnWithDateAndTime, 3) AS NativeDateTime 
FROM dbo.YourTable; 

注意此查詢中顯示的日期時間格式是由您使用的應用程序,而不是SQL Server數據庫來確定。另外,考慮將表格數據類型更改爲datetime以避免數據完整性問題; nvarchar將允許存儲無效日期。

+0

他希望轉換從'DATETIME'轉換爲'VARCHAR',而不是相反。 – 2015-02-07 13:56:45

+0

@noryap,最近的評論說它是一個從csv導入的nvarchar列。 – 2015-02-07 13:58:47

+0

@ roryap問題中的第一句話完全相反。 – DavidG 2015-02-07 14:01:35

0

此一有時間,但包括毫秒......它可能是太多了:)

SELECT CONVERT(VARCHAR(30), GETDATE(), 131) 
+0

這輸出'18/04/1436 8:55: 53:903AM'。 – 2015-02-07 13:56:12

+0

哦,廢話。正在尋找正確的格式,但完全忘記了實際的日期(facepalm) – 2015-02-07 13:58:39

0

這是我想到一個艱鉅的任務。這是最好的,我可以拿出:

DECLARE @MyDate DATETIME 
SET @MyDate = GETDATE() 
SELECT CONVERT(VARCHAR(50), @MyDate, 3) + ' ' + CONVERT(VARCHAR(50), CONVERT(TIME, @MyDate), 100)