2012-03-15 35 views
1

我需要將字符串轉換爲datetime。我需要存儲datetime與在SQL Server 2005毫秒在SQL Server中將字符串轉換爲DATETIME

例如:

SELECT CAST('2010-07-28 20:07:25.733000000' AS DATETIME) 

當我嘗試我收到錯誤,如

轉換失敗從字符串轉換日期時間時

+0

除了目前的答案,但值得注意的是,如果你要繼續轉換爲'datetime'而不是'datetime2',你應該用日期和時間替換字母'T'。例如。 ''2010-07-28T20:07:25.733'' - 否則,如果不同的語言設置生效,轉換可能會失敗。 – 2012-03-15 14:17:45

回答

3

您需要截斷。

SELECT CONVERT(DATETIME, CONVERT(CHAR(23), '2010-07-28 20:07:25.733000000')); 
+0

但我需要商店完整value.i的意思是'2010-07-28 20:07:25.733000000' – 2012-03-15 14:21:52

+1

...並且@Damien_The_Unbeliever指出,您需要確定您的語言和日期格式設置是否合適,或者首先傳入'yyyy-mm-ddThh:mm:ss.mmm'。 – 2012-03-15 14:21:57

+0

然後你使用了錯誤的數據類型。如果你使用的是SQL Server 2008,你應該使用'datetime2'。如果沒有,那麼使用本地日期時間類型無法將其存儲在SQL Server 2005或更低版本中。你可以將它存儲爲一個字符串,但我不建議這樣做。如果這些始終是零,那麼爲什麼你需要存儲它們?您可以隨時在演示時添加它們。 – 2012-03-15 14:23:12

2

(帶舍入)的milisecond範圍,如果您的使用SQL2K8處於DATETIME 0-999,更高精度使用DATETIME2

+0

我正在使用SQL2K5。是否有其他工作方式 – 2012-03-15 14:22:44

+0

截斷以確保您不會像Aaron的答案那樣提供> 3位小數,或者您的意思是存儲更多的毫秒精度? – 2012-03-15 14:24:08

1

如果您刪除最後一個0:在毫秒s此將工作:

SELECT CAST('2010-07-28 20:07:25:733' AS DATETIME)