Hot*_*ndy 2 sql sql-server date
我有这个日期: 7/19/2013
我想将其格式化如下:
2013-07-19 00:00:00.000
Run Code Online (Sandbox Code Playgroud)
我试过这个:
select convert(varchar(10),'7/19/2013',120)
Run Code Online (Sandbox Code Playgroud)
但它给了我同样的结果!
Aar*_*and 13
你需要告诉SQL Server它是一个日期; 否则,它只会看到一个字符串,并忽略样式编号,因为它与字符串无关.正如Steve Kass所指出的那样,如果您保护传入的字符串免受不正确的基于区域或语言的翻译(例如d/m/y- 这可能导致错误,或者更糟糕的是错误的数据),则代码只是真正可移植的.我已经更新了代码以将字符串解释为m/d/y无论语言环境如何,但如果您使用的是SQL Server 2012,则还可以PARSE()在其示例中使用(或者TRY_PARSE()如果您希望基本上忽略无效日期).
如果你想要附加的时间包括毫秒,你需要允许超过10个字符,以及一个支持毫秒的样式.
SELECT CONVERT(CHAR(23),CONVERT(DATETIME,'7/19/2013',101),121);
Run Code Online (Sandbox Code Playgroud)
结果:
2013-07-19 00:00:00.000
Run Code Online (Sandbox Code Playgroud)
如果您不关心毫秒,则可以使用样式120:
SELECT CONVERT(CHAR(19),CONVERT(DATETIME,'7/19/2013',101),120);
Run Code Online (Sandbox Code Playgroud)
如果你不关心秒,你可以先截断:
SELECT CONVERT(CHAR(16),CONVERT(DATETIME,'7/19/2013',101),120);
Run Code Online (Sandbox Code Playgroud)