2

更新:尝试后我仍然得到这个(4/14/2012 2:44:01 PM) 结果

 select convert(varchar(30), '4/14/2012 2:44:01 PM',121) 

结束更新

我应该使用什么格式来获得这个结果集:

2012-04-14 14:44:01.683

我尝试使用它,但没有显示微秒/毫秒

select convert(varchar(23), '4/14/2012 2:44:01 PM',120)

给我这个结果:

4/14/2012 2:44:01 PM
4

3 回答 3

4

您非常接近 - 在 MSDN 在线图书的CAST 和 CONVERT章节中,您错过了一行正确答案....您可以使用样式号。121 ( ODBC canonical (with毫秒) ) 得到你正在寻找的结果:

SELECT CONVERT(VARCHAR(30), GETDATE(), 121)

这给了我以下输出:

2012-04-14 21:44:03.793

更新:根据您更新的问题-当然这不起作用-您正在将字符串(这:'4/14/2012 2:44:01 PM'只是一个字符串-它不是日期时间!)转换为字符串......

您需要首先将您拥有的字符串转换为 aDATETIME然后将转换回字符串!

试试这个:

SELECT CONVERT(VARCHAR(30), CAST('4/14/2012 2:44:01 PM' AS DATETIME), 121) 

现在你应该得到:

2012-04-14 14:44:01.000

显然,所有毫秒都为零,因为您的原始值不包括任何 ....

于 2012-04-14T19:42:39.243 回答
2

将您的日期字符串转换为日期时间格式,如下所示

select convert(varchar(23), convert(datetime,'4/14/2012 2:44:01 PM'),120)
于 2012-10-20T05:15:51.913 回答
1
select convert(varchar(30), CAST('4/14/2012 2:44:01 PM' As DATETIME),121)
于 2012-04-15T05:17:42.067 回答