我需要将以下日期转换为输出,如图所示。我可以使用代码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)
输出应为:
07/06/2011 10:30:07 PM
答案 0 :(得分:5)
您当前的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));
结果:
06/07/2011 10:30:07 PM
如果你真的想要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));
结果:
07/06/2011 10:30:07 PM
然而,出于两个原因,这是一个坏主意:
区域格式令人困惑(读者是否知道05/06/2013是5月6日而不是6月5日?取决于他们来自哪里)甚至是危险的(如果他们将该字符串传回来,你可能会6月5日他们的意思是5月6日。
您的客户语言最好使用自己的Format()
或ToString()
方法对其进行格式化,以便在最后一刻显示。
答案 1 :(得分:1)
convert
中没有格式选项。您需要使用DATEPART()代替并从各个组件构建新字符串:
DATEPART(@adddate, hh) + ':' + DATEPART(@adddate, mi) + etc...