将时间更改为包括小时/分钟和上午/下午



使用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

相关内容

最新更新