Jyi*_*ina 1 sql sql-server-2008
我需要将下面的日期转换为输出,如图所示.我可以使用代码101获取日期部分,但是当时我找不到任何将时间转换为HH的代码:MM:SS AM/PM?有什么想法吗?谢谢!
declare @adddate datetime
Set @adddate = 2011-07-06T22:30:07.5205649-04:00
Convert(varchar, @adddate, 101) + ' ' +
Convert(varchar, @adddate, 108)
Run Code Online (Sandbox Code Playgroud)
输出应该是:
07/06/2011 10:30:07 PM
Run Code Online (Sandbox Code Playgroud)
你的潮流SET甚至不起作用.当您具有来自字符串文字的有效日期时间值时,您可以执行以下操作:
DECLARE @adddate DATETIME;
SET @adddate = '2011-07-06T22:30:07.521';
SELECT CONVERT(CHAR(11), @adddate, 103)
+ LTRIM(RIGHT(CONVERT(CHAR(20), @adddate, 22), 11));
Run Code Online (Sandbox Code Playgroud)
结果:
06/07/2011 10:30:07 PM
Run Code Online (Sandbox Code Playgroud)
如果你真的想要m/d/y(你的问题不明确),使用样式22的路径会略短:
DECLARE @adddate DATETIME;
SET @adddate = '2011-07-06T22:30:07.521';
SELECT STUFF(CONVERT(CHAR(20), @adddate, 22), 7, 2, YEAR(@adddate));
Run Code Online (Sandbox Code Playgroud)
结果:
07/06/2011 10:30:07 PM
Run Code Online (Sandbox Code Playgroud)
但是,出于两个原因,这是一个坏主意:
区域格式令人困惑(读者是否会知道05/06/2013是5月6日而不是6月5日?取决于他们来自哪里)甚至是危险的(如果他们将该字符串传回去,你可能会在6月5日存储它们的意思5月6日).
您的客户端语言最好使用它自己的方法Format()或ToString()格式化它,以便在最后一刻显示.