使用SQL并查看w3schools在日期转换(http://www.w3schools.com/sql/func_convert.asp)上提供的列表,看起来没有真正离开获得小时/分钟和AM/PM而没有在时间前面获得一大堆东西。
我目前在查询中使用24小时时间
CONVERT(VARCHAR(5),sa.StartDateTime,108) ApptStartTime
它吐出这样的东西
14:55
我在找这样的东西
02:55 PM
这是一个可能的解决方案:
/* Sample SQL */
DECLARE @d1 datetime;
SELECT @d1 = '5/30/2014 21:46:59';
SELECT Convert(varchar, Convert(time, @d1), 100) AS ApptStartTime;
/* ApptStartTime=9:46PM */
DECLARE @d2 datetime;
SELECT @d2 = '5/30/2014 01:19:11';
SELECT Convert(varchar, Convert(time, @d2), 100) AS ApptStartTime;
/* ApptStartTime=1:19AM */
在你的例子中,你可以使用:
SELECT Convert(varchar, Convert(time, sa.StartDateTime), 100) AS ApptStartTime;
<子>编辑:子>
如果前导0和空格很重要,您可以使用:
SELECT Stuff(Right('0'+Convert(varchar, Convert(time, sa.StartDateTime), 100), 7), 6, 0, ' ') AS ApptStartTime;
这个方法在AM/PM之前添加一个前导0并插入一个空格:
SELECT STUFF(REPLACE(SUBSTRING(CONVERT(VARCHAR(20),sa.StartDateTime,100),13,7),' ','0'),6,0,' ');
或仅
SELECT STUFF(SUBSTRING(CONVERT(VARCHAR(20),sa.StartDateTime,100),13,7),6,0,' ');
如果不需要前导0
请注意,如果可能的话,在UI/Report层中这样做会更容易/更干净。
BTW -所以这篇文章可能有一个明确的答案-来自@Goat CO
SELECT CONVERT(VARCHAR(15),CAST(sa.StartDateTime AS TIME),100