2014-09-05 93 views
0

如果SELECT GETDATE()产生2014-09-05 11:06:38.927SELECT CONVERT(VARCHAR(50), GETDATE(), 101)产生09/05/2014,那么,为什么不SELECT CONVERT(VARCHAR(50), '2014-09-05 11:06:38.927', 101)产生2014-09-05 11:06:38.927,而不是09/05/2014转换日期时间为varchar?只有日期部分

+2

为什么不让应用程序执行格式化?还有,为什么你想以不明确的格式呈现日期?你认为没有人会来到英国或加拿大或美国以外的任何地方,并假设这是5月9日而不是9月5日? – 2014-09-05 19:24:49

+0

感谢smarty裤子。很高兴您认为这是一个网络应用程序,但实际上,它是一个非常面向客户的桌面应用程序,运行在位于美国的一家小公司内,因此不存在任何英国或加拿大公民使用它的风险。无论如何,这无疑是一个假设性问题。你的观点与我的问题无关。 – 2014-09-06 01:10:48

回答

1

您要转换的第三条语句中的值已经是一个字符串。转换将其转换价值和下降的时间,如果你第一个字符串转换为日期:

SELECT CONVERT(VARCHAR(50), CAST('2014-09-05 11:06:38.927' as DATETIME), 101) 
3
CONVERT(VARCHAR(50), GETDATE(), 101) 

被转换日期时间为varchar

CONVERT(VARCHAR(50), '2014-09-05 11:06:38.927', 101) 

是一个varchar转换为varchar

尝试:

CONVERT(VARCHAR(50), convert(datetime, '2014-09-05 11:06:38.927'), 101) 

,您应该看到与第一个查询类似的结果。