使用SQL并查看w3schools提供的关于日期转换(http://www.w3schools.com/sql/func_convert.asp)的列表,看起来似乎没有真正的时间来获取小时/分钟和上午/下午没有得到一大堆东西前面的时间。
我目前正在查询中使用24小时
CONVERT(VARCHAR(5),sa.StartDateTime,108) ApptStartTime
这会吐出像这样的东西
14:55
我正在寻找类似的东西
02:55 PM
答案 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