2012-03-15 72 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)