2013-04-18 61 views
6

如何將時間格式「10:02:22 PM」轉換爲SQL Server日期時間格式。在SQL Server中將Varchar轉換爲時間

我有一列這樣的數據。我從CSV文件導入了這一列,現在想將它轉換爲DateTime格式,以便我可以使用日期時間函數。

我希望能夠以正確的DateTime格式將此列插入到另一個表中。

+0

當時數據真的存在嗎? – RichardTheKiwi 2013-04-18 05:53:28

+0

日期和時間值以任何格式存儲在數據塊中。它是客戶端應用程序格式的日期和時間值。 – 2013-04-18 05:59:55

+0

@RichardTheKiwi:是的,AM/PM之前的空間已經存在。 – SarangArd 2013-04-18 06:27:14

回答

1

您不需要轉換它。當您使用

INSERT otherTable 
SELECT ....., timeAsVarchar, ... 
    FROM csvTable 

如果所有的時間數據(前導空格或不)是從字符串解析的發生隱式轉換,查詢將做工精美。但是,如果有不能被轉換成時間差或空白數據的可能性,測試第一

INSERT otherTable 
SELECT ....., CASE WHEN ISDATE(timeAsVarchar)=1 THEN timeAsVarchar END, ... 
    FROM csvTable 

ELSE NULL是隱含的,所以我離開了出來。

+0

隱式投射轉換失敗,我得到錯誤,「轉換日期和/或時間從字符串轉換失敗。」 那麼我該怎麼做。我如何定義「其他表」中的時間列? ? – SarangArd 2013-04-18 06:25:20

2

使用此鏈接:http://msdn.microsoft.com/en-us/library/ms187928.aspx

因爲只有時間轉換...

SELECT CONVERT(TIME, '10:00:22 PM'); 

提供了以下輸出...

22:00:22.000000 

時間轉換日期和時間......

SELECT CONVERT(DATETIME, '10:00:22 PM'); 

給人的以下輸出...

1900-01-01 22:00:22.0000 

注意:對於datetime,您需要將特定日期作爲輸入,否則將其視爲默認世紀日期。

+0

出於某種原因,當我試圖將列轉換,但它成功,當我獨自做它轉換失敗。 可我知道爲什麼嗎? – SarangArd 2013-04-18 11:25:27

+0

它是能夠轉換AM值,但沒有PM值。 它不是」能夠將「00:00:01 PM」轉換爲「00:59:59 PM」 但它可以轉換爲「01:00:00 PM」 你能幫我解答嗎? – SarangArd 2013-04-18 11:28:58

+1

在12個小時的系統中,沒有00個小時,這是您對話失敗的原因。 – 2013-04-18 12:22:04

相關問題