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

时间:2014-05-30 16:08:52

标签: sql time

使用SQL并查看w3schools提供的关于日期转换(http://www.w3schools.com/sql/func_convert.asp)的列表,看起来似乎没有真正的时间来获取小时/分钟和上午/下午没有得到一大堆东西前面的时间。

我目前正在查询中使用24小时

CONVERT(VARCHAR(5),sa.StartDateTime,108) ApptStartTime

这会吐出像这样的东西

14:55

我正在寻找类似的东西

02:55 PM 

3 个答案:

答案 0 :(得分:0)

这是一个可能的解决方案:

/* 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;

答案 1 :(得分:0)

这是一个添加前导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 /报告层中更容易/更清晰。

答案 2 :(得分:0)

顺便说一句 - 所以这篇文章可能有一个明确的答案 - 来自@Goat CO

SELECT CONVERT(VARCHAR(15),CAST(sa.StartDateTime AS TIME),100